关于双JWT的流程记录
鉴权问题一直是个经典问题,从最初的cookie-session方案,到token方案,再到使用签名保证准确性的JWT方案
一直到OAuth2.0,这里我在项目中对于原来的传统授权方式使用双JWT进行改造
为什么要使用双token
由于token的过期时间在token生成后就难以更改,所有token的过期时长不宜设置过长:
- 当用户信息发生更改时,token中的信息无法及时更改
- 增加token中信息泄露的风险
- token过期时间短的话,用户需要不停登陆,体验较差
即可以实现被窃取到accessToken也无所谓,只是短时间内有效,而在accessToken过期时,前端调用续期接口再次获取新的双token,实现安全,静默续期等功能,我这里画了一张流程图供参考
具体代码不展示

客户端浏览器首次登陆,获取到accessToken和refreshToken
accessToken是短期凭证,每次请求放在请求头携带过去,用于鉴权
refreshToken是长期凭证,存放在localStorage中,只有当请求携带accessToken,响应了过期时
refreshToken才出马,调用续期接口,获取新的双token,用于下一周期的请求
由于refreshToken存放在localStorage,无需担心CRSF攻击
accessToken是短期凭证,即便被窃取了,也只是短期有效,影响不会太大

浙公网安备 33010602011771号