上一篇:https://blog.csdn.net/zcccc_/article/details/135527168
每次访问接口经过过滤器的时候去判断是否过期、是否需要延期,我们拟定一个“允许过期时间”,跟据过期时间去判断。(如果有好办法欢迎留言,共同学习。)
1.在 JwtUtil 类加入新字段
//定义允许刷新JWT的有效时长(在这个时间范围内,用户的JWT过期了,不需要重新登录, 后台会给一个新的JWT给前端,这个叫Token的刷新机制后面会着重介绍它的意义。)
public static final Long ALLOW_EXPIRES_TIME = 30 * 60* 1000L; // 允许过期时间(毫秒) 30分钟
2.在 AuthorizeFilter 过滤器判断(拦截token验证的方法)
//如果当前时间减去JWT过期的时间,大于允许过期时间,说明不允许重新申请了,就得重新登录了,此时返回null,否则就是可以重新申请,开始在后台重新生成新的JWT。(30分钟)
if ((System.currentTimeMillis()-expiration.getTime())>JwtUtil.ALLOW_EXPIRES_TIME) {
return response.writeWith(Mono.just(buffer));
}else{
//生成新token,存到header中返回给前端
String jwt = JwtUtil.createJWT(id);
response.getHeaders().add("token", jwt);
}
执行结果: