我正在为许多设备设计RESTful API。但我不知道如何处理令牌并将其存储在数据库中(有过期时间)。
我的想法是关注
客户端发送GET请求
GET /users/login 'username=Foo&password=Bar'
Response:
{
"logged": true,
"token": "224md10c4u01420c1024u1209uMU24"
}
服务器写入令牌表
| ID | token | user_id | expires |
| 1 | 224md10c4u01420c1024u1209uMU24 | 4 | 21/01/2015 |
然后客户端收到令牌,并在请求时例如:
GET /users/update "mail=foobar@example.com&password=topsecret"
Authorization: Awesome 224md10c4u01420c1024u1209uMU24
服务器检查令牌是否处于活动状态并且是否存在(如果未返回错误)。 如果令牌存在且活动更新数据
if token.id > 0 && token.expires > Date.now() {
Users.getUserById(token.user_id).update(request.data)
http.response(array('success'=>true))
}
客户获得
{
"success": true
}
这种方式又好又安全吗?我不需要OAuth2,因为我不打算与第三方共享API。
感谢。 S上。
答案 0 :(得分:0)
首先,当您进行身份验证和身份验证过程时,您不希望使用GET请求发送登录表单。它很容易被盗,使用帖子通过网络发送敏感日期。
第二个而不是令牌,你可以使用sessionID所以不需要你另一个令牌。
在休息时它接缝就可以了。但总有我的黑客和东西。
希望这有助于你。