小程序开发技巧:深入理解双token机制的无感刷新

发表时间: 2024-04-12 17:40

背景

现在大部分开发使用JWT 单token,作为登录鉴权的解决方案,这样可以不在服务端存储。

但是也存在一些问题:

  1. 注销与过期问题:JWT一旦发放,服务端无法强制使其失效,直到过期。这可能导致注销用户或权限变更后,原有token仍有效。
  2. 安全性风险:JWT的安全性依赖于签名密钥,密钥泄露会导致伪造token的风险。同时,存储在易受攻击位置(如localStorage)的JWT可能被盗用。
  3. 存储与性能问题:JWT包含用户信息,增加token大小,可能不适合所有场景,特别是在移动应用或带宽有限的环境中。同时,解析和验证JWT的过程可能增加服务端处理时间。

这个时候,双JWT无感刷新的方案,在这个痛点下应运而生,扛起了大任。

简介

双token无感刷新技术方案是通过两种不同有效期的token来保障用户信息的安全性和访问的持续性。具体来说,它包括一个长期有效的refresh token和一个短期有效的access token。

前端小程序在每次请求时携带access token,后端Spring Boot验证access token的有效性,如果access token过期但refresh token没有过期则使用refresh token获取新的access token,从而实现无感刷新。

实现流程

流程描述

时序图

代码示例

最后

JWT双token无感刷新方案通过引入refresh_token和短生命周期的access_token,有效解决了JWT单token在注销、过期、安全性和性能等方面存在的问题,提升了用户体验和系统安全性。开发中还没有用的以后可以用起来。