JWT中RefreshToken的应用场景及刷新token的具体实现思路

在JWT token中,refreshToken的作用主要是避免token过期时,前端用户突然退出登录产生不良体验。

试想,如果你正访问某基于jwt token机制的网站,该网站token过期时间是24小时,

你在23小时59分前已经登录过了,现在你访问某页面时,正好处于token过期时间24小时的临界点,

这时token突然过期,你上一秒看视频正起劲儿呢,下一秒就让你重新登录了,你说气不气?

这时候如果有一个refreshToken,虽然正式的token过期了,但前端却可以拿这个refreshToken来主动续期。

这样就解决了token过期导致用户上一秒还在登录,下一秒就突然退出登录的问题。


但是如何实现通过refreshToken刷新token呢?

  1. 首先,refreshToken有效时间一定要比token有效时间长至少才能不影响用户体验,具体要长多少得以实际需求为准,建议是24小时

  2. 前端每次访问后端都携带token,如果token失效则后端直接返回类似token失效请重新登录的报文。

  3. 前端第一次收到token失效的响应后,从本地存储拿refreshToken再去请求

  4. 后端一检测到refreshToken参数不为空,就去校验解析这个refreshToken

    1. 如果有效,后端就返回一个新的token及refreshToken给前端,前端收到后更新本地存储,同时拿这个新的token向后端发起第三次请求,然后成功获取资源

    2. 如果无效,则后端同样返回token失效,前端第二次收到失效的响应则跳转到登录页重新登录

这样就解决了以上场景的问题

 

 

  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值