本篇速览
- JWT续签问题
-
快过期时返回新的token
-
refreshToken
-
其他需要刷新token的情况
为什么需要续签
如果给JWT设定了一个有效时间的话,时间到JWT是会过期的。但假如这个时候用户正在提交重要信息,填了一大堆信息,按下按钮时,后台拦截器发现token过期,告知前端,前端直接退回登录页,那这次提交就相当于无效了,还得登录后重新填一遍【当然前端也能做缓存,这里就不考虑那么多了,只是个栗子】
而原始JWT设计下,是没有考虑续签问题的。所以续签(即延长JWT的过期时间)工作需要我们自己来做。
快过期了返回新的token
类似于 Session 认证中的做法: 假设服务端给的 token 有效期设置为30分钟,服务端每次进行校验时,如果发现 token 的有效期马上快过期了, 服务端就重新生成 token 给客户端。
客户端每次请求都检查新旧token,如果不一致,则更新客户端存储的token。
- 这种做法的问题是仅仅在快过期的时候请求才会更新 token ,对客户端不是很友好。
refreshToken刷新机制
流程图
用户登录返回两个 token :第一个是 acessToken ,它的过期时间比较短,比如是1天;另外一个是 refreshToken 它的过期时间更长一点,可以是accessToken的2倍:2天。
客户端登录后,将 accessToken和refreshToken 保存在客户端本地,每次访问将 accessToken 传给服务端。服务端校验 accessToken 的有效性,
如果过期的话,就将 refreshToken 传给服务端。如果 refreshToken 有效,服务端就生成新的 accessToken 给客户端。否则,客户端就重新登录即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)