JWT退出登录的解决方案

Posted by JC on April 19, 2020

从Session到JWT的技术转型后,发现JWT在用户主动注销、强制登出(禁止登陆)、忘记密码、修改密码,JWT续签等方面的因为他的特性,解决起来让人头疼,之前内网环境和客户需求对这方面要求不严,无为而治的方法只让前端清理token,后端不理会。后来碰见几种解决方案,记录备用

黑名单校验

凡是退出登录的token都放入黑名单中,定期清理。

每次用户请求服务器都校验token是否在黑名单

版本号校验

访问时从token中取出版本号和用户id 和 redis中存储 用户id和版本号 做对比,不一致则不给访问。

用户登出的时候在redis中把用户版本号加一。

 

过期时间校验

登录时token附带创建时间。访问时校验redis存储的过期时间,如果创建时间大于过期时间则不给访问。

 

Token副本校验

在redis中存储token副本,用户请求时候校验,如果redis中不存在该副本则不给通过。