【发布时间】:2021-03-03 06:24:45
【问题描述】:
让我们考虑一个特殊的场景,管理员(Admin A)登录并开始在系统上做一些管理工作。突然,另一个管理员(SuperAdmin)出于某种原因想要将管理员 A 降级为普通用户。然而,即使现在Admin A 只是一个普通用户,他的token 仍然是一个Admin token。所以,在令牌在一小时后自动过期之前,他仍然可以做管理工作。
那么,在这种情况下,手动使该令牌过期的方法是什么?系统是否应该使用数据库查询来检查每个管理路由的用户级别?或者还有其他方法可以实现吗?
有没有办法配置核心网关来检查令牌的有效性?
我认为,如果我在 coregateway 中检查每个请求的令牌验证,我们会产生很多开销,并且在我看来会违背使用 JWT 的全部目的。
【问题讨论】:
-
由于 JWT 根据定义是无状态的,因此您不能手动使它们过期。使用 JWT 的最佳方法是使用非常短的验证时间(大约 15 分钟),并在 JWT 过期时使用刷新令牌刷新 JWT。这留下了一小段时间,用户仍然拥有有效的令牌,但如果这是不可接受的,您可能必须维护此令牌的拒绝列表,其中仍然活动的令牌添加到此拒绝列表和服务器将在每个请求上检查此列表。在这种情况下,使用 JWT 的灵活性就消失了。
标签: spring-security jwt jhipster-gateway