实现目标
- 延长token过期时间
- 活跃用户在token过期时,在用户无感知的情况下动态刷新token,做到一直在线状态
- 不活跃用户在token过期时,直接定向到登录页
登录返回字段
先看看登录接口返回的数据如下
@Data
public class LoginVo implements Serializable {
private static final long serialVersionUID = 6711396581310450023L;
//...省略部分业务字段
/**
* token令牌 过期时间默认15day
*/
private String jwt;
/**
* 刷新token 过期时间可以设置为jwt的两倍,甚至更长,用于动态刷新token
*/
private String refreshJwt;
/**
* token过期时间戳
*/
private Long tokenPeriodTime;
}
- jwt:用户正常访问接口时提交的token,过期时间设置长一些,15day吧
- refreshJwt:刷新token 过期时间可以设置为jwt的两倍,甚至更长,用于动态刷新token时候提交后台验证
- tokenPeriodTime:token过期时间戳,前端每次调用接口前需要主动判断是否已经过期,如果过期则提交refreshJwt访问token刷新的接口进行刷新
动态刷新token
-
前端检测到token过期后,携带refreshJwt访问后台刷新token的接口,服务端在拦截器中依然对refreshJwt进行解析鉴权
-
假如refreshJwt也过期了,提示登录过期,强制跳转登录页
-
假如refreshJwt还在有效期,则签发新的token返回,前端使用最新的token进行接口请求
网友评论