TokenInterceptor.java 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package com.sf.config;
  2. import com.sf.util.JwtUtils;
  3. import com.sf.util.UserHolder;
  4. import jakarta.servlet.http.HttpServletRequest;
  5. import jakarta.servlet.http.HttpServletResponse;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.web.servlet.HandlerInterceptor;
  9. // 拦截器 要实现HandlerInterceptor接口
  10. // 要作为spring容器的组件
  11. @Component
  12. public class TokenInterceptor implements HandlerInterceptor {
  13. @Autowired
  14. private JwtUtils jwtUtils;
  15. // controller执行之前
  16. @Override
  17. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  18. String token = request.getHeader("Authorization");
  19. if (token != null && !token.equals("null")) {
  20. Long uid = jwtUtils.parseToken(token, "front");
  21. System.out.println("用拦截器解析uid: " + uid);
  22. UserHolder.setUserId(uid);
  23. }
  24. return HandlerInterceptor.super.preHandle(request, response, handler);
  25. }
  26. // controller执行之后
  27. @Override
  28. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  29. System.out.println("controller执行完成");
  30. UserHolder.clearUserId();
  31. HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
  32. }
  33. }