环回上的永久令牌

时间:2016-09-21 16:46:18

标签: node.js loopbackjs strongloop

我正在使用将由iPhone APP使用的Loopback API构建应用。存在与MySQL数据库的连接,我在其中运行一些查询以获得一些结果并在API上公开。

  1. 端点包含一个ACL,只允许经过身份验证的用户执行任何操作,包括GET操作。所以基本上需要使用?access_token查询字符串来完成请求。
  2. 我想设置一个可以保存在MySQL数据库中的令牌,可以在API上“永久”使用。
  3. 我不确定我是否提出了正确的问题,但如果这不是解决这个问题的方法,那会是什么?

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

    感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

您可以在iOS应用程序发送的凭据json中传递ttl,在此示例中,令牌将存活60秒,只需使用较高的值使令牌成为“永久”:

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

或者创建一个更远的方法来更改ttl属性,请查看以下文章:

LINK

答案 1 :(得分:1)

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

  

for (byte b : bytesData) { st.append( (char)b ); } 布尔允许访问永不过期的令牌。

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

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

allowEternalTokens

然后在登录时,将"User": { "dataSource": "db", "options": { "validateUpsert": true, "allowEternalTokens": true } }, 设置为ttl

请注意,每次登录(-1)时,您的令牌都会被替换为新令牌。因此,如果要重用相同的访问令牌,请仅登录一次。您可以从AccessToken模型(或直接从数据库)获取现有的访问令牌。

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

有关自定义用户/访问令牌模型的更多信息,请访问:http://loopback.io/doc/en/lb3/Authentication-authorization-and-permissions.html#preparing-access-control-models

答案 2 :(得分:0)

我将TTL设置为最长1年,但我将created字段设置为将来很远的某个时间,例如2112-10-29 00:00:00-04。这使得令牌从现在起已经过了一个世纪。