- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我最近在 LoopBack3 中启动了一个项目,我正在使用集成的环回身份验证,并且我需要在 ttl 时间结束后刷新 AccessToken。
我已经搜索了环回文档和互联网,但我还没有找到一种方法。我尝试在 server/server.js 中创建一个中间件,并直接使用连接器(MySql)进行查询并更新“已创建”字段,但它似乎执行更新时没有错误,但它不会更改数据库中的值
// Array with the paths that I want to apply the middleware
var aPaths = [...];
//Middleware in server.js
app.use(aPaths,async function (req, res, next) {
const connector = app.dataSources.myDataSource.connector;
if (!req.headers.authorization || req.headers.authorization == '') {
return res.status(403).json({ error : {code:'AUTHORIZATION_REQUIRED',statusCode:401} });
}else{
var sql = "SELECT * FROM AccessToken where id = '" + req.headers.authorization + "'";
connector.execute(sql, null, async (err, resultObject) => {
if (!err && resultObject) {
if (resultObject.length > 0) {
const date1 = new Date(Date.now());
const date2 = new Date(String(resultObject[0].created));
var diffTime = Math.abs(date1.getTime() - date2.getTime());
// Difference between the creation date and the current date (In minutes)
diffTime = diffTime / (1000 * 60);
// Token validity in minutes
var token_validity = resultObject[0].ttl / 60;
// If the token is still valid, do nothing
if (token_validity > diffTime) {
next();
}else{
// If the token expired in less than 10 minutes I want to refresh it
if ((diffTime - token_validity) < 10) {
var sql = "UPDATE AccessToken SET created= NOW() WHERE id = '" + req.headers.authorization + "'";
console.log("SQL: " + sql);
try {
await connector.execute(sql, null, (err) =>{
if (error){
console.log(err);
return res.status(401).json({ error : {code:'AUTHORIZATION_REQUIRED',statusCode:401} });
} else {
next();
}
});
} catch(err) {
console.log(err);
return res.status(401).json({ error : {code:'AUTHORIZATION_REQUIRED',statusCode:401} });
}
} else {
return res.status(401).json({ error : {code:'AUTHORIZATION_REQUIRED',statusCode:401} });
}
}
} else {
return res.status(401).json({ error : {code:'AUTHORIZATION_REQUIRED',statusCode:401} });
}
} else {
return res.status(401).json({ error : {code:'AUTHORIZATION_REQUIRED',statusCode:401} });
}
});
}
});
如果 token 在 10 分钟内过期,我想更新该 token ,但这样我得到:
错误:访问 token 无效
因为它继续执行 next() 并且 token 因过期而被环回删除
最佳答案
只需针对特定用户更新 accessToken 表中创建的字段即可。
转到 server.js 文件并更新以下代码:
app.use(function (req, res, next) {
if (!req.accessToken) {
return next();
}
if (your condition)) {
req.accessToken.created =new Date();
req.accessToken.save(next);
}
});
关于node.js - Loopback 3中刷新AccessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57914341/
在讨论实际问题之前 好吧,我已经创建了自己的身份验证系统,并将在我的 API 上使用它。 简单解释: 上/signup用户输入用户名、密码等... API 授予用户 tokens它们存储在数据库中的用
如何从下面的匿名内部类获取accessToken?当我尝试在类外部使用 accessToken 时,它显示为 null。我试图在关闭内部类后立即使用 accessToken 显示一个 toast,但它
所以,标题是一个问题。尝试从环回应用程序生成 Angular 服务,但出现此错误 正在加载 LoopBack 应用程序“xxx\\server\\server.js” 为 API 端点“/api”生成
我正在尝试使我的应用程序的 web 版本在 flutter 中可用。在移动版本中,无论是 android 还是 ios,使用 google 凭据登录都可以完美运行。在 web flutter 中,我正
我在基于 scala play 框架的 Web 应用程序中使用 aws cognito 作为用户管理解决方案。我正在使用以下代码登录。 var mIdentityProvider: AWSCognit
我正在尝试使用 Microsoft.Azure.Management.Resources 库来管理一些 Azure 资源。我已在 Azure AD 中注册了应用程序,并授予了它所有权限。我获取了它的
如何为 StrongLoop API 创建永久访问 token 。现在,对于每个用户登录,它都会创建一个访问 token 。和我的数据库中不必要的条目 我可以增加访问 token (ttl)的有效性,
我使用的是azure signalR,生成的accesstoken非常大,因为用户所在的广告组列表非常大。我错过了什么吗?有人可以帮助我吗? 详细说明:我使用 azure signalR 创建了一个推
我正在开发一个 oAuth2 服务器,我偶然发现了这个问题。 让我们假设一个场景,我的 token 设置为在一小时内过期。在此时间范围内,某些客户端使用相同的 client_id 和相同的 redir
我正在使用restfb-1.6.12,并且在使用以下代码时遇到了错误“AccessToken无法解析为类型”的一些问题: import com.restfb.DefaultFacebookClient
我使用的是azure signalR,生成的accesstoken非常大,因为用户所在的广告组列表非常大。我错过了什么吗?有人可以帮助我吗? 详细说明:我使用 azure signalR 创建了一个推
是否有机会使用 accessToken 登录谷歌驱动器。我有用户 帐户刷新 token 和 accessToken 我需要用它们登录。 最佳答案 刷新 token (或访问 token )仅向授予它的
我有一个带有两个按钮的简单 View Controller 。第一个是我使用 获得的官方 Facebook 登录按钮 let loginButton = FBSDKLoginButton() 顺便问一
我已将 session 更改为访问 token ,但它无法解析 getCurrentAccessToken 和 isOpened 的方法 // Fetch Facebook user info if
本月,Facebook删除了“ offline_access”权限。 如何扩展或要求新的访问令牌? 我应该像在facebook.authorize之前那样使用吗?但是在这种情况下,用户希望再次看到登录
我有一个 Facebook session 。但它没有打开。我尝试如下获取AccessToken Session.getActiveSession().getAccessToken(); 但它不返回任
我正在尝试创建 AccessToken 的实例,但它引发了异常消息。我有两种生成 AccessToken 的方法。我的工作流程是,在 android 机器上,我使用 Oauth 对用户进行身份验证,然
我正在使用 auth0 和 nextJS。 我接下来要做的是:当用户添加他的凭据并登录时,他将被重定向到 callback API。 这里 import auth0 from '../../u
我一直在使用旧的Facebook SDK,并将accessToken和expirationDate保存在NSUserDefaults中。但是现在在新的Facebook SDK 3.2中有一个名为FBA
我正在使用 the official Cordova Facebook plugin在我的移动应用程序中实现 Facebook 登录。几天来我一直在尝试使以下代码正常工作,但我不知道问题出在哪里。我只
我是一名优秀的程序员,十分优秀!