一、常用方法
void addInterceptors(InterceptorRegistry var1);
void addViewControllers(ViewControllerRegistry registry);
void addResourceHandlers(ResourceHandlerRegistry registry);
void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
void configureViewResolvers(ViewResolverRegistry registry);
void configureContentNegotiation(ContentNegotiationConfigurer configurer);
void addCorsMappings(CorsRegistry registry);
@Autowired
@Qualifier("WebRequestInterceptor")
private HandlerIntercepter webRequestIntercepter;
@Override
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(webRequestInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("static/**", "/login");
WebMvcConfigurer.super.addInterceptors(registry);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/toLogin").setViewName("login");
}
@Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("POST","GET","PUT","DELETE","OPTIONS")
.maxAge(3600)
.allowCredentials(true);
}
二、请求拦截器
@Slf4j
@Configuration(value = "WebRequestInterceptor")
public class WebRequestInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url = request.getRequestURI();
if(request.getMethod().equals(HttpMethod.OPTIONS.name())){
return HandlerInterceptor.super.preHandle(request, response, handler);
}
if(url.contains("swagger") || url.contains("v2") || url.contains("api-docs")){
return HandlerInterceptor.super.preHandle(request, response, handler);
}
if(request.getHeader("token") != null){
if(request.getHeader("token")=="redis或其他缓存的token信息"){
return HandlerInterceptor.super.preHandle(request, response, handler);
}
else{
return false;
}
}else{
return false;
}
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
UserThreadLocal.remove();
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}