JWT 的退出登录方法

JWT 登录之后,服务器发放 token。在到期时间之前,token 一直有效,那么如何才能实现用户登出(让 token 失效)?

黑名单校验

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

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

版本号校验

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

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

过期时间校验

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

Token副本校验

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

无为而治

只让前端清理token,后端不理会。(大多数)

前端清理cookie:

document.cookie = "cookiename=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT"

大体方案

分而治之

对于需要只有一个人一个终端登录的服务采用 【版本号校验】 解决方案

相当于乐观锁,但是是用redis来实现,速度快,还方便踢人下线

对于需要注销token的服务,采用 【Token副本校验 or 过期时间校验】解决方案

比查阅黑名单列表还要快得多

速度相当快

对于不需要注销token(大部分服务),则采用 【无为而治】解决方案

完美的JWT登录的使用方式

来源:https://blog.csdn.net/a1098766713/article/details/102914354

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值