我正在使用将由iPhone APP使用的Loopback API构建应用。存在与MySQL数据库的连接,我在其中运行一些查询以获得一些结果并在API上公开。
我不确定我是否提出了正确的问题,但如果这不是解决这个问题的方法,那会是什么?
我的主要观点是我需要使用令牌对请求进行身份验证,但我不想在设置后丢失此令牌。
感谢任何帮助。谢谢!
答案 0 :(得分:1)
您可以在iOS应用程序发送的凭据json中传递ttl
,在此示例中,令牌将存活60秒,只需使用较高的值使令牌成为“永久”:
POST /Users/login
{
"email":"user@email.com",
"password":"12345689",
"ttl": 60000
}
或者创建一个更远的方法来更改ttl
属性,请查看以下文章:
答案 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
。这使得令牌从现在起已经过了一个世纪。