Userinterceptor.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package com.zhentao.intercepoter;
  2. import com.zhentao.config.NullLogin;
  3. import com.zhentao.tool.TokenUtils;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.data.redis.core.RedisTemplate;
  6. import org.springframework.stereotype.Component;
  7. import org.springframework.web.method.HandlerMethod;
  8. import org.springframework.web.servlet.HandlerInterceptor;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. @Component
  12. public class Userinterceptor implements HandlerInterceptor {
  13. @Autowired
  14. private RedisTemplate<String,String> redisTemplate;
  15. @Override
  16. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  17. String requestURI = request.getRequestURI();
  18. // if (requestURI.startsWith("/user/login")||requestURI.startsWith("/user/register")){
  19. // return true;
  20. // }
  21. String token = request.getHeader("token");
  22. if (token==null){
  23. System.err.println("Token不能为空");
  24. return false;
  25. }
  26. HandlerMethod handlerMethod = (HandlerMethod) handler;
  27. NullLogin annotation = handlerMethod.getMethod().getAnnotation(NullLogin.class);
  28. System.err.println("自定义注解"+annotation);
  29. if (annotation!=null){
  30. return true;
  31. }
  32. String userIdFromToken = TokenUtils.getUserIdFromToken(token);
  33. System.err.println("解析后的ID:"+userIdFromToken);
  34. String s = redisTemplate.opsForValue().get(userIdFromToken);
  35. if (s!=null){
  36. return true;
  37. }else {
  38. System.err.println("Token错误");
  39. return false;
  40. }
  41. }
  42. }