1

我正在尝试使用 Micronaut 测试 JWT 身份验证。

我从本指南中阅读,本指南正在运行,但我仍然完全不明白。

例如,当用户 A 使用用户名sherlock登录并登录成功时,用户 A 的客户端将获取 JWT Token 并存储在Cookie 另一端用户 B 使用相同的用户名登录服务器,因此他/她将获取新的 JWT 令牌并存储到Cookie.

这意味着用户 A 和 B 可以访问http:localhost:8080/,但是当用户 A 或 B访问时Logout,用户 A 和 B 都无法http://localhost:8080/再次访问。

这意味着,当其中一个注销时,两个 JWT 令牌都不再有效。

本指南中, micronaut 如何撤销该 JWT 令牌?

4

1 回答 1

4

我推荐阅读这篇文章:

https://medium.com/devgorilla/how-to-log-out-when-using-jwt-a8c7823e8a6

但简短的回答是,您实际上无法像在表单登录或基本身份验证方法中那样“注销”。例如,您可以强制删除 cookie 以删除 JWT。但更好的解决方案是为您的 JWT 提供过期时间,以获得满足此类情况的未授权状态。

假设我们的 JWT 已过期 5 分钟,用户 A 和 B 已登录。然后用户 A “注销”并且应用程序删除 cookie,但用户 B 浏览器中的现有 JWT 仍然存在,您无法强制一个删除。但是客户端 B 的 JWT 将在 5 分钟后过期,他将不得不再次登录(因为他将在每次即将到来的 HTTP 调用时得到一个 401)

我希望这对你有某种解释:)

看到这张图片

于 2019-01-10T14:31:07.303 回答