JWT通过在令牌本身中包含权限来承诺更快/更简单。但我的问题是这样的:假设用户已登录,并且正在使用包含权限信息的JWT,允许他们访问A和B. 然后管理员或其他用户出现并授予用户在用户仍然登录时查看C的权限。但由于用户仍在使用旧的JWT,他仍然无法访问C.
这里有什么选择?将令牌列入黑名单并强制用户再次登录?或者完全忘记基于令牌的权限?
答案 0 :(得分:4)
JWT令牌存储在localStorage或前端的cookie中,因此当您的应用程序将面临更改权限时会出现此问题。
使用刷新令牌机制,每个用户使用唯一的SECRET存储在数据库中,因此通过更改此SECRET将强制该特定用户重新登录并获取具有更新权限的新令牌。
答案 1 :(得分:1)
就个人而言,我只依靠JWT进行身份验证(来电者是谁)。
对于授权(调用者可以执行的操作),从持久存储中查找调用者角色/权限以获取最新信息。