【发布时间】:2021-06-28 18:26:05
【问题描述】:
我正在尝试实现注销功能。我们使用 JWT 令牌进行身份验证。但是由于 JWT 令牌只有在过期后才会失效,即使在用户注销之后,如果使用旧的(未过期的)令牌,它也可以工作。 有没有办法确保 JWT 令牌失效?
【问题讨论】:
-
一般来说:没有。这就是现在的那些工作以及它们应该如何工作。您可以在数据库中跟踪 JWT 的有效性,但是如果任何服务需要联系数据库以验证令牌,您将失去 JWT 的许多好处。此时,您可以只使用会话 cookie。
-
正如@luk2302 提到的 - 您可以通过跟踪令牌的状态来使 JWT 无效。但为什么?只是减少令牌的生命产生时间。但是,如果您仍然想在注销操作后使令牌无效 - 您可以将它们的状态存储在 Redis 中。或者 cookie 可能是这种情况下的选项
-
这正是不应该使用 JWT 存储会话的原因之一:curity.io/resources/learn/jwt-best-practices
标签: java spring-security oauth-2.0 jwt