package com.sf.config; import com.sf.util.JwtUtils; import com.sf.util.UserHolder; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; // 拦截器 要实现HandlerInterceptor接口 // 要作为spring容器的组件 @Component public class TokenInterceptor implements HandlerInterceptor { @Autowired private JwtUtils jwtUtils; // controller执行之前 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader("Authorization"); if (token != null && !token.equals("null")) { Long uid = jwtUtils.parseToken(token, "front"); System.out.println("用拦截器解析uid: " + uid); UserHolder.setUserId(uid); } return HandlerInterceptor.super.preHandle(request, response, handler); } // controller执行之后 @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("controller执行完成"); UserHolder.clearUserId(); HandlerInterceptor.super.afterCompletion(request, response, handler, ex); } }