1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| public class RefreshTokenInterceptor implements HandlerInterceptor { @Resource private StringRedisTemplate stringRedisTemplate; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.info("拦截器拦截"); String token = request.getHeader("authorization"); if (StringUtils.isEmpty(token) || "undefined".equals(token)) { return true; } log.info("获得的token:{}",token); String userStr = stringRedisTemplate.opsForValue().get(SystemContext.LOGIN_TOKEN + token); User user = JSONUtil.toBean(userStr,User.class); log.info("拦截到user:{}",user); if (user == null) { return true; } UserDTO userDTO = getUserDTOAndSaveToThreadLocal(user); log.info("保存用户:{}到ThreadLocal",userDTO); stringRedisTemplate.expire(SystemContext.LOGIN_TOKEN + token,2, TimeUnit.HOURS); return true; } @NotNull private static UserDTO getUserDTOAndSaveToThreadLocal(User user) { UserDTO userDTO = new UserDTO(); userDTO.setId(user.getId()); userDTO.setNickName(user.getNickName()); userDTO.setIcon(user.getIcon()); UserHolder.saveUser(userDTO); return userDTO; } }
|