@Component
public class AppTokenInterceptor extends HandlerInterceptorAdapter {
/**
* 前置拦截 - 获取请求头中的 userId , 放入到当前线程中
*
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//1. 获取请求头
String userId = request.getHeader("userId");
if (StringUtils.isNotBlank(userId) && !StringUtils.equals("0",userId)) {
//2. 存入线程
ApUser apUser = new ApUser();
apUser.setId(Long.valueOf(userId));
AppThreadLocalUtil.setUser(apUser);
}
return super.preHandle(request, response, handler);
}
/**
* 清楚线程中的用户数据
*
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//清楚线程数据
AppThreadLocalUtil.clear();
super.postHandle(request, response, handler, modelAndView);
}
}
注入拦截器对象
ackage com.ligong.search.config;
import com.ligong.search.interceptor.AppTokenInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WmMvcConfig implements WebMvcConfigurer {
@Autowired
private AppTokenInterceptor appTokenInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(appTokenInterceptor).addPathPatterns("/api/**");
}
}