如何使用 JWT 处理更改的权限

Posted

技术标签:

【中文标题】如何使用 JWT 处理更改的权限【英文标题】:How to deal with changing permissions with JWTs 【发布时间】:2018-03-09 07:34:24 【问题描述】:

JWT 承诺通过在令牌本身中包含权限来更快/更简单。但是我的问题是:假设用户已登录,并且正在使用包含允许他们访问 A 和 B 的权限信息的 JWT。 然后管理员或其他用户出现并授予该用户在用户仍登录时查看 C 的权限。但由于该用户仍在使用旧的 JWT,他仍然无法访问 C。

这里有哪些选项?将令牌列入黑名单并强制用户重新登录?或者完全忘记基于令牌的权限?

【问题讨论】:

【参考方案1】:

JWT 令牌存储在前端的 localStorage 或 cookie 中,因此这是您的应用程序将面临更改权限的问题。

使用存储在数据库中的每个用户具有唯一 SECRET 的刷新令牌机制,因此通过更改此 SECRET 将强制该特定用户重新登录并获得具有更新权限的新令牌。

【讨论】:

【参考方案2】:

就我个人而言,我只会依赖 JWT 进行身份验证(调用者是谁)。

对于授权(调用者可以做什么),从您的持久存储中查找调用者角色/权限以获取最新信息。

【讨论】:

以上是关于如何使用 JWT 处理更改的权限的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ASP.NET Core 中的声明检查 JWT 中的权限?

如何使用 Laravel 5.2 + Guzzle 6 存储 JWT 并授予用户访问权限

如何使用spring security和java在jwt json中传递角色或权限

如何使用 jwt 在 typescript 中实现更改密码 API?

使用 React 处理 JWT 身份验证

如何更改 jwt 访问令牌的附加信息