package cc.mrbird.febs.common.configure;
|
|
import cc.mrbird.febs.common.interceptor.LoginInterceptor;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.web.cors.CorsConfiguration;
|
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
|
import org.springframework.web.filter.CorsFilter;
|
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
/**
|
* @author xxx
|
* @date 2020-08-24
|
**/
|
@Configuration
|
public class WebMvcConfigure implements WebMvcConfigurer {
|
|
@Override
|
public void addInterceptors(InterceptorRegistry registry) {
|
InterceptorRegistration registration = registry.addInterceptor(new LoginInterceptor());
|
registration.addPathPatterns("/api/**");
|
registration.excludePathPatterns("/api/login/**");
|
registration.excludePathPatterns("/api/common/**");
|
registration.excludePathPatterns("/api/category/**");
|
registration.excludePathPatterns("/api/goods/**");
|
registration.excludePathPatterns("/api/pay/**");
|
registration.excludePathPatterns("/api/news/**");
|
registration.excludePathPatterns("/api/member/cashOutSetting");
|
registration.excludePathPatterns("/api/member/agentDetail");
|
registration.excludePathPatterns("/api/member/activityInfo");
|
registration.excludePathPatterns("/api/leader/leaderList");
|
registration.excludePathPatterns("/api/leader/leaderListInFence");
|
registration.excludePathPatterns("/api/leader/noLoginLeaderTitle");
|
registration.excludePathPatterns("/api/xcxPay/wxpayCallback");
|
registration.excludePathPatterns("/api/xcxPay/rechargeCallBack");
|
registration.excludePathPatterns("/api/xcxPay/fapiaoCallBack");
|
registration.excludePathPatterns("/api/fuPayReturn/callback");
|
registration.excludePathPatterns("/api/fuPayReturn/payment/callback");
|
registration.excludePathPatterns("/api/fuPay/notify");
|
registration.excludePathPatterns("/api/tokenview/**");
|
registration.excludePathPatterns("/api/order/lwPayNotify");
|
registration.excludePathPatterns("/api/order/lwPayReturn");
|
registration.excludePathPatterns("/api/order/bsPayNotify");
|
registration.excludePathPatterns("/api/track/visit");
|
|
// 添加Swagger UI相关路径
|
registration.excludePathPatterns("/api/swagger-ui.html");
|
registration.excludePathPatterns("/v2/api-docs");
|
registration.excludePathPatterns("/configuration/ui");
|
registration.excludePathPatterns("/configuration/security");
|
registration.excludePathPatterns("/swagger-resources");
|
}
|
|
/**
|
* Servlet 级别的跨域过滤器,比 Shiro Filter 和 Spring MVC Interceptor 优先级更高,
|
* 确保 OPTIONS 预检请求能正确返回 CORS 头。
|
*/
|
@Bean
|
public CorsFilter corsFilter() {
|
CorsConfiguration config = new CorsConfiguration();
|
// 允许的来源域名(根据实际情况添加)
|
config.addAllowedOrigin("https://www.polypepprotein.com");
|
config.addAllowedOrigin("https://polypepprotein.com");
|
config.addAllowedOrigin("http://localhost:30002");
|
// 允许所有方法
|
config.addAllowedMethod("*");
|
// 允许所有请求头
|
config.addAllowedHeader("*");
|
// 允许携带 Cookie / Authorization 等凭证信息
|
config.setAllowCredentials(true);
|
// 预检请求缓存时间
|
config.setMaxAge(3600L);
|
|
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
|
source.registerCorsConfiguration("/**", config);
|
return new CorsFilter(source);
|
}
|
|
@Override
|
public void addCorsMappings(CorsRegistry registry) {
|
// 跨域请求配置(作为 CorsFilter 的补充,处理 Spring MVC 层面的 CORS)
|
registry.addMapping("/**")
|
.allowedOrigins("https://www.polypepprotein.com", "https://polypepprotein.com")
|
.allowedMethods("*")
|
.allowedHeaders("*")
|
.allowCredentials(true)
|
.maxAge(3600);
|
}
|
}
|