package tech.powerjob.server.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.server.standard.ServerEndpointExporter; import tech.powerjob.common.OpenAPIConstant; import tech.powerjob.server.auth.interceptor.PowerJobAuthInterceptor; import tech.powerjob.server.openapi.OpenApiInterceptor; import javax.annotation.Resource; /** * CORS * * @author tjq * @since 2020/4/13 */ @Configuration @EnableWebSocket public class WebConfig implements WebMvcConfigurer { @Resource private OpenApiInterceptor openApiInterceptor; @Resource private PowerJobAuthInterceptor powerJobAuthInterceptor; @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH"); } @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } @Override public void addInterceptors(InterceptorRegistry registry) { /* 可以添加多个拦截器 addPathPatterns("/**") 表示对所有请求都拦截 .excludePathPatterns("/base/index") 表示排除对/base/index请求的拦截 多个拦截器可以设置order顺序,值越小,preHandle越先执行,postHandle和afterCompletion越后执行 order默认的值是0,如果只添加一个拦截器,可以不显示设置order的值 */ registry.addInterceptor(powerJobAuthInterceptor) .addPathPatterns("/**") .excludePathPatterns("/css/**", "/js/**", "/images/**", "/img/**", "/fonts/**", "/favicon.ico") .order(0); registry.addInterceptor(openApiInterceptor) .addPathPatterns(OpenAPIConstant.WEB_PATH.concat("/**")) .order(1); } }