package ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
public class RefreshTokenInterceptor implements HandlerInterceptor {
private StringRedisTemplate stringRedisTemplate;
public RefreshTokenInterceptor(StringRedisTemplate stringRedisTemplate) {
this.stringRedisTemplate = stringRedisTemplate;
}
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
//从请求头中获取用户登录的token
String token = ("authorization");
if((token)) {
//直接放行,不做处理
return true;
}
Map<Object, Object> entries = ().entries(RedisConstants.LOGIN_USER_KEY + token);
//entries不会为null,只需要判断是否为空map即可
if(()) {
//直接放行,不做处理
return true;
}
//将map转成UserDTO
UserDTO userDTO = (entries, new UserDTO(), false);
//将UserDTO存入ThreadMap中
(userDTO);
//刷新token的有效期
(RedisConstants.LOGIN_USER_KEY + token, RedisConstants.LOGIN_USER_TTL,
);
//放行
return true;
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
();
}
}