【发布时间】:2020-10-25 05:15:42
【问题描述】:
据我所知,JWT 的主要用途是我们可以将用户相关数据存储在 JWT 令牌本身中,并在资源服务器进行令牌验证期间节省不必要的 DB 命中。问题是如果我将数据存储在 JWT 中随着时间的推移而变化,例如角色或用户菜单列表或用户状态,它如何处理这些变化。
考虑这种情况。
- 具有 admin 角色的用户已登录 Web 应用程序,在登录时用户状态为 ACTIVE,用户角色为 admin。 authserver 使用这些信息生成 JWT 令牌。
- 访问令牌有效期设置为 15 分钟,刷新令牌有效期设置为 8 小时。
- 另一方面,另一个具有“Superadmin”角色的用户挂起“Admin”用户或将“Admin”用户角色更改为“Supervisor”。现在由于“管理员”已经有一个未过期的访问令牌或刷新令牌,我是否应该在每次验证令牌时进行另一个数据库检查,或者我不应该将用户状态和角色存储在 JWT 令牌本身中?李>
【问题讨论】:
标签: oauth-2.0 jwt jwt-auth spring-oauth2