我在我的第一个nodejs应用程序中实现授权时遇到问题,该应用程序使用expressjs,sequelize和jsonwebtoken进行身份验证。我希望禁止/允许不同用户的路由,我不想使用像oauth2这样的其他包或者为我处理授权的东西。
目前我已创建了一个jsonwebtoken,其中包含有效负载中包含的权限角色:
{
"userid": 1,
"name": "John Doe",
"permissions" : ["user_get", "user_post", "user_put"]
"iat": 1505142542,
"exp": 1505146142
}
不,我想在#34; GET / user"等电话中查看。如果允许经过身份验证的用户调用它。
我的问题是:使用这种方法是否安全,或者我不应该在jwt中包含权限?另一种方法是询问数据库并检索权限,而不是检查有效负载。
此外,如果服务器使用户无效,则会检查令牌是否仍然有效。
答案 0 :(得分:0)
JWT安全又好。如果您了解OAuth2,您甚至可以实现其更简单的版本。
现在我建议的是你不打算使用
"userid": 1,
"name": "John Doe"
在验证用户访问API的权限后,无论如何都不要将它们保留在JWT中。而是使用JWT的签名,这样就不需要保持用户在网络上的详细信息。 :)
答案 1 :(得分:-3)
是的,JWT可以非常安全地保存机密数据。
对于其他设置,您可以在每个请求上更新jwt令牌,因此每当客户端向您发送jwt令牌时。每个请求都将使用jwt令牌验证用户。每个响应都会将客户端发送到新的jwt令牌以进行下一次请求。