package com.vincent.rsf.server.common.config;
|
|
import com.vincent.rsf.server.common.constant.Constants;
|
import com.vincent.rsf.server.common.interceptor.severlet.DynamicFieldsInterceptor;
|
import com.vincent.rsf.server.common.utils.Http;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.web.servlet.AsyncHandlerInterceptor;
|
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
/**
|
* WebMvc配置, 拦截器、资源映射等都在此配置
|
*
|
* @author vincent
|
* @since 2019-06-12 10:11:16
|
*/
|
@Configuration
|
public class WebMvcConfig implements WebMvcConfigurer {
|
|
@Override
|
public void addInterceptors(InterceptorRegistry registry) {
|
registry.addInterceptor(getAsyncHandlerInterceptor())
|
.addPathPatterns("/**")
|
.excludePathPatterns("/swagger-resources/**", "/webjars/**","/erp/**", "/v2/**","/v3/**","/doc.html/**", "/swagger-ui.html/**");
|
|
registry.addInterceptor(dynamicFieldsInterceptor())
|
.addPathPatterns("/**")
|
.excludePathPatterns("/swagger-resources/**",
|
"/webjars/**",
|
"/erp/**",
|
"/v2/**",
|
"/v3/**",
|
"/doc.html/**",
|
"/swagger-ui.html/**");
|
}
|
|
@Bean
|
public DynamicFieldsInterceptor dynamicFieldsInterceptor() {
|
return new DynamicFieldsInterceptor();
|
}
|
|
@Bean
|
public AsyncHandlerInterceptor getAsyncHandlerInterceptor() {
|
return new AsyncHandlerInterceptor(){
|
@Override
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
Http.cors(response);
|
return true;
|
}
|
};
|
}
|
|
@Override
|
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
|
registry.addResourceHandler("swagger-ui.html")
|
.addResourceLocations("classpath:/META-INF/resources/");
|
registry.addResourceHandler("doc.html")
|
.addResourceLocations("classpath:/META-INF/resources/");
|
registry.addResourceHandler("/webjars/**")
|
.addResourceLocations("classpath:/META-INF/resources/webjars/");
|
}
|
|
|
@Override
|
public void addCorsMappings(CorsRegistry registry) {
|
registry.addMapping("/**")
|
.allowedOriginPatterns("*")
|
.allowedHeaders("*")
|
.exposedHeaders(Constants.TOKEN_HEADER_NAME)
|
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH")
|
.allowCredentials(true)
|
.maxAge(3600);
|
}
|
|
|
public static void cors(HttpServletResponse response){
|
// 跨域设置
|
response.setHeader("Access-Control-Max-Age", "3600");
|
response.setHeader("Access-Control-Allow-Origin", "*");
|
response.setHeader("Access-Control-Allow-Methods", "*");
|
response.setHeader("Access-Control-Allow-Headers", "*");
|
response.setHeader("Access-Control-Expose-Headers", Constants.TOKEN_HEADER_NAME);
|
}
|
|
}
|