Userinterceptor.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. String userIdFromToken1 = TokenUtils.getUserIdFromToken(token);
  23. redisTemplate.opsForValue().set("uid",userIdFromToken1);
  24. HandlerMethod handlerMethod = (HandlerMethod) handler;
  25. NullLogin annotation = handlerMethod.getMethod().getAnnotation(NullLogin.class);
  26. System.err.println("自定义注解"+annotation);
  27. if (annotation!=null){
  28. return true;
  29. }
  30. if (token==null){
  31. System.err.println("Token不能为空");
  32. return false;
  33. }
  34. String userIdFromToken = TokenUtils.getUserIdFromToken(token);
  35. System.err.println("解析后的ID:"+userIdFromToken);
  36. String s = redisTemplate.opsForValue().get(userIdFromToken);
  37. if (s!=null && s.equals(token)){
  38. return true;
  39. }else {
  40. System.err.println("Token错误");
  41. return false;
  42. }
  43. }
  44. }