我们网站之前采用jwt的方式实现认证,即用户登录后,登录接口返回一个token,前端存着,后面的接口都带上它,后端凭此进行认证。
但这种模式有个缺陷:token过期,用户就要重新登录,用户体验非常不好。
于是,我们设计出了一种双token的模式实现页面的无感刷新。
基本的原理是这样:登录成功后,后端返回两个token,token1用来真正做认证,token2用来刷新token。
具体的实现分四步:
一 在接口拦截器中拦截因为认证token过期的接口(收集这些接口),同时拦截因为刷新token过期的接口(返回登录页)。
二 使用刷新token调用刷新token接口,作用是后端对token进行刷新,然后返回新的token。
三 使用新token替换原来的token。
四 重新调用那些因为认证token过期的接口。
总结
刷新token比认证token的有效期长的多,刷新token过期用户会重新登录,而认证token过期,页面会无感刷新。