前后端分离——token超时刷新策略

实现目标

  • 延长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进行接口请求

你可能感兴趣的:(前后端分离——token超时刷新策略)