环回上的永久令牌

Permanent token on loopback

我正在构建一个使用 Loopback API 的应用程序,它将被 iPhone 应用程序使用。有一个到 MySQL 数据库的连接,我在其中 运行 进行一些查询以获得一些结果并在 API.

上公开
  1. 端点包含一个 ACL,只允许经过身份验证的用户执行任何操作,包括 GET 操作。所以基本上请求需要使用 ?access_token 查询字符串来完成。
  2. 我想设置一个可以保存在 MySQL 数据库中并且可以在 API 上使用 "forever" 的令牌。

我不确定我问的问题是否正确,但如果这不是解决问题的方法,那会是什么?

我的主要观点是我需要使用令牌对请求进行身份验证,但我不想在设置令牌后丢失它。

感谢任何帮助。谢谢!

您可以在您 iOS 应用程序发送的凭据 json 中传递 ttl,在此示例中,令牌将存在 60 秒,只需使用较高的值即可令牌 "permanent":

POST /Users/login  
{
"email":"user@email.com",
"password":"12345689",
"ttl": 60000
}

或者创建一个 before remote 方法来更改 ttl 属性,查看这篇文章:

LINK

我将 TTL 设置为最长 1 年,但我将 created 字段设置为非常遥远的未来某个时间,例如 2112-10-29 00:00:00-04。这使得令牌在一个世纪后过期。

默认情况下最大令牌 ttl 为 1 年。值得庆幸的是,Loopback 有一个选项可以让您创建永久访问令牌:

allowEternalTokens Boolean Allow access tokens that never expire.

https://loopback.io/doc/en/lb3/Model-definition-JSON-file.html#advanced-options

如果您使用的是默认用户模型,您可以在 server/model-config 中启用它。json:

"User": {
  "dataSource": "db",
  "options": {
    "validateUpsert": true,
    "allowEternalTokens": true
  }
},

然后登录时,将ttl设置为-1

请注意,每次您登录 (User.login) 时,您的令牌都会被替换为一个新令牌。因此,如果您想重复使用相同的访问令牌,只需登录一次。您可以从 AccessToken 模型(或直接从数据库)中获取现有的访问令牌。

如果您有自定义用户模型,可以直接在模型定义文件中设置allowEternalTokens。此外,如果您有自定义用户模型,您还需要更新 AccessToken 模型(内置模型或自定义模型,如果有的话)的 relations 以指向自定义用户模型.

有关自定义 user/access 代币模型的更多信息,请点击此处:http://loopback.io/doc/en/lb3/Authentication-authorization-and-permissions.html#preparing-access-control-models