Ram*_*eez 13 access-token strongloop loopbackjs
如何为StrongLoop API创建永久访问令牌.现在,对于每个用户登录,它创建一个访问令牌.在我的数据库中不必要的输入
我可以增加访问令牌(TTL)的有效性提到这里.
但它仍然会产生新的登录.
Loopback有一个选项,允许您创建永久访问令牌:
allowEternalTokensBoolean允许访问永不过期的令牌.
https://loopback.io/doc/en/lb3/Model-definition-JSON-file.html#advanced-options
这是我做的:
启用allowEternalTokens用户模型
在server/model-config.json中:
"User": {
"dataSource": "db",
"options": {
"validateUpsert": true,
"allowEternalTokens": true
}
},
Run Code Online (Sandbox Code Playgroud)登录时,设置ttl为-1
User.login(
{
email: email,
password: password,
ttl: -1,
},
Run Code Online (Sandbox Code Playgroud)正如您已经想到的那样,每次登录时都会创建一个新的(不同的)访问令牌.因此,如果要重用相同的访问令牌,请仅登录一次.您可以从AccessToken模型(或直接从数据库)获取访问令牌
AccessToken.findOne(
{
where: {
userId: userId,
},
},
Run Code Online (Sandbox Code Playgroud)如果您有自定义用户模型,则可以allowEternalTokens直接在模型定义文件中进行设置.此外,如果您有自定义用户模型,则还需要更新relationsAccessToken模型(内置的模型或自定义模型)以指向自定义用户模型.
有关自定义用户/访问令牌模型的更多信息,请访问:http://loopback.io/doc/en/lb3/Authentication-authorization-and-permissions.html#preparing-access-control-models
你混合了两件不同的东西.AccessToken条目创建和AccessToken的ttl值.
当用户登录时,创建新的AccessToken.如果用户注销,则删除AccessToken.如果用户登录2次,例如从2个不同的设备登录,那么您将获得2个AccessTokens,这样用户就可以同时从2个设备访问您的应用程序.
如果用户想要从同一设备登录并且他已经拥有有效令牌,那么您的应用应该识别这一点并自动登录.
显然,如果ttl值已过期,则令牌将不再有效.如果尝试使用此标记,则会删除此标记.我想如果你不想在你的数据库中记录这些记录,你可以创建一个删除过期令牌的自定义cron作业.
关于永久访问令牌,它将需要禁用ttl值,而这对于默认的AccessToken模型来说是不可能的.我创建了一个拉取请求以支持它,如果您感兴趣,可以插入并查看它是否合并.
| 归档时间: |
|
| 查看次数: |
6592 次 |
| 最近记录: |