在环回中创建永久访问令牌
Creating Permanent AccessToken in loopback
如何为 StrongLoop 创建永久访问令牌 API。现在,对于每个用户登录,它都会创建一个访问令牌。我的数据库中不必要的条目
我可以提高访问令牌 (ttl) 的有效性,如前所述 here。
但它仍然会为新登录生成。
你混淆了两种不同的东西。 AccessToken 条目创建和 AccessToken 的 ttl 值。
当用户登录时,会创建一个新的 AccessToken。如果用户注销,AccessToken 将被删除。如果用户登录 2 次,例如从 2 个不同的设备,那么您将获得 2 个 AccessTokens,这样用户就可以同时从 2 个设备访问您的应用程序。
如果用户想从同一台设备登录并且他已经拥有有效的令牌,您的应用应该能够识别并自动让他登录。
显然,如果 ttl 值已过期,令牌将不再有效。如果尝试使用此令牌,将被删除。我想如果你不想在你的数据库中有这些记录,你可以创建一个自定义的 cron 作业来删除过期的令牌。
关于永久访问令牌,需要禁用 ttl 值,目前默认的 AccessToken 模型无法做到这一点。我创建了一个 pull request to support that,如果你有兴趣,可以插话看看它是否被合并。
Loopback 有一个选项可以让您创建永久访问令牌:
allowEternalTokens
Boolean Allow access tokens that never expire.
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
}
},
登录时,将ttl
设置为-1
User.login(
{
email: email,
password: password,
ttl: -1,
},
如您所知,每次登录时都会创建一个新的(不同的)访问令牌。因此,如果您想重复使用相同的访问令牌,只需登录一次。您可以从 AccessToken 模型(或直接从数据库)获取访问令牌
AccessToken.findOne(
{
where: {
userId: userId,
},
},
如果您有自定义用户模型,可以直接在模型定义文件中设置allowEternalTokens
。此外,如果您有自定义用户模型,您还需要更新 AccessToken 模型(内置模型或自定义模型,如果有的话)的 relations
以指向自定义用户模型.
有关自定义 user/access 代币模型的更多信息,请点击此处:http://loopback.io/doc/en/lb3/Authentication-authorization-and-permissions.html#preparing-access-control-models
如何为 StrongLoop 创建永久访问令牌 API。现在,对于每个用户登录,它都会创建一个访问令牌。我的数据库中不必要的条目
我可以提高访问令牌 (ttl) 的有效性,如前所述 here。
但它仍然会为新登录生成。
你混淆了两种不同的东西。 AccessToken 条目创建和 AccessToken 的 ttl 值。
当用户登录时,会创建一个新的 AccessToken。如果用户注销,AccessToken 将被删除。如果用户登录 2 次,例如从 2 个不同的设备,那么您将获得 2 个 AccessTokens,这样用户就可以同时从 2 个设备访问您的应用程序。
如果用户想从同一台设备登录并且他已经拥有有效的令牌,您的应用应该能够识别并自动让他登录。
显然,如果 ttl 值已过期,令牌将不再有效。如果尝试使用此令牌,将被删除。我想如果你不想在你的数据库中有这些记录,你可以创建一个自定义的 cron 作业来删除过期的令牌。
关于永久访问令牌,需要禁用 ttl 值,目前默认的 AccessToken 模型无法做到这一点。我创建了一个 pull request to support that,如果你有兴趣,可以插话看看它是否被合并。
Loopback 有一个选项可以让您创建永久访问令牌:
allowEternalTokens
Boolean Allow access tokens that never expire.
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 } },
登录时,将
ttl
设置为-1
User.login( { email: email, password: password, ttl: -1, },
如您所知,每次登录时都会创建一个新的(不同的)访问令牌。因此,如果您想重复使用相同的访问令牌,只需登录一次。您可以从 AccessToken 模型(或直接从数据库)获取访问令牌
AccessToken.findOne( { where: { userId: userId, }, },
如果您有自定义用户模型,可以直接在模型定义文件中设置allowEternalTokens
。此外,如果您有自定义用户模型,您还需要更新 AccessToken 模型(内置模型或自定义模型,如果有的话)的 relations
以指向自定义用户模型.
有关自定义 user/access 代币模型的更多信息,请点击此处:http://loopback.io/doc/en/lb3/Authentication-authorization-and-permissions.html#preparing-access-control-models