参考:https://blog.csdn.net/qq_38762237/article/details/81235538
spring2X*
拦截器实现
HandlerInterceptor接口,下面是我自定义的接口
public class RequestFilter implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String appCode;
//情况1 包含accessToken,解析出appCode,优先级高
String accessTokenStr = request.getParameter("accessToken");
appCode = this.decryptAppCode(accessTokenStr);
if (StringUtils.isEmpty(appCode)) {
//在accessToken中未获取导appCode,采用情况2 从请求头中获取
String client = request.getHeader("client");
appCode = StringUtils.acquireAppCode(client);
}
//存入共享线程变量中
ShareThread.threadLocal.set(appCode);
return true;
}
}
第二步 注册自定义拦截器
创建注册类------实现WebMvcConfig接口----------重写addInterceptors方法,我的代码如下
/**
* 注册拦截器
*
* @author qiaofeng
*/
@Configuration
public class RegisterInterceptor implements WebMvcConfigurer {
@Bean
public RequestFilter requestFilterBean(){
return new RequestFilter();
}
//注册request请求拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new RequestFilter()).addPathPatterns("/**");
}
}
注意
registry.addInterceptor(new RequestFilter()).addPathPatterns("/**"); 后面的/**表示所有请求都拦截