关于 JWT的token自动刷新和JWT的可控性的问题

问题:如果用户一直在操作,那么就不能让token自动过期了,而应该自动刷新
还有如果用户在另一个地方重新登录,那么前一个登录的token应该失效而不能继续使用

这里原本用JWT就是想使用无状态登录,可是如果完全无状态登录,首先中间字段如果要保存用户ID等信息就暴露了部分信息,其次完全无状态服务端就对其不可控,而且也不能自动刷新,到时间就过期了,所以考虑后还是需要解决这些问题

解决办法:
关于Redis中保存RefreshToken信息(做到JWT的可控性)

  1. 登录认证通过后返回AccessToken信息(在AccessToken中保存当前的时间戳和帐号)
  2. 同时在Redis中设置一条以帐号为Key,Value为当前时间戳(登录时间)的RefreshToken
    现在认证时必须AccessToken没失效以及Redis存在所对应的RefreshToken,且RefreshToken时间戳和AccessToken信息中时间戳一致才算认证通过,这样可以做到JWT的可控性
  3. 如果重新登录获取了新的AccessToken,旧的AccessToken就认证不了,因为Redis中所存放的的RefreshToken时间戳信息只会和最新生成的AccessToken信息中携带的时间戳一致,这样每个用户就只能使用最新的AccessToken认证
  4. Redis的RefreshToken也可以用来判断用户是否在线,如果删除Redis的某个RefreshToken,那这个RefreshToken所对应的AccessToken之后也无法通过认证了,就相当于控制了用户的登录,可以剔除用户
    关于根据RefreshToken自动刷新AccessToken
  5. 本身AccessToken的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值