刷新拦截器

时间:2025-03-07 07:20:36
  • 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;
  • }
  • @Override
  • 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;
  • }
  • @Override
  • public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
  • ();
  • }
  • }