我正在尝试使用Micronaut测试JWT身份验证。
我从this guide读到,该指南正在运行,但我仍然完全不了解。
例如,当用户A使用用户名sherlock
登录并且登录成功时,用户A的客户端将获得JWT令牌并存储在Cookie
中
而另一端,用户B使用相同的用户名并登录服务器,因为他/她将获得新的JWT令牌并存储到Cookie
中。
这意味着用户A和B可以访问http:localhost:8080/
,但是当用户A或B执行Logout
时,用户A和B都不能访问http://localhost:8080/
再次。
这意味着当其中一个注销时,两个JWT令牌都不再有效。
来自this guide,的微型导航员如何撤回该JWT令牌?
答案 0 :(得分:2)
我建议阅读这篇文章:
https://medium.com/devgorilla/how-to-log-out-when-using-jwt-a8c7823e8a6
但是简短的答案是您实际上无法像在表单登录或基本auth方法中一样“注销”。例如,您可以强制删除Cookie以删除JWT。但是更好的解决方案是为您的JWT提供到期时间,以使其满足此类情况的未授权状态。
假设我们的JWT到期了5分钟,用户A和B已登录。然后用户A“注销”,应用删除了cookie,但是用户B的浏览器中现有的JWT仍然有效,并且您没有强制删除的选项。但是客户端B的JWT将在5分钟后过期,并且他将不得不再次登录(因为他将为每个即将到来的HTTP调用获得401)
我希望这对您有帮助:)