package com.yanzhen.framework.mvc; // 定义包名 import org.springframework.context.annotation.Bean; // 导入@Bean注解 import org.springframework.context.annotation.Configuration; // 导入@Configuration注解 import org.springframework.web.cors.CorsConfiguration; // 导入CorsConfiguration类 import org.springframework.web.cors.CorsConfigurationSource; // 导入CorsConfigurationSource接口 import org.springframework.web.cors.UrlBasedCorsConfigurationSource; // 导入UrlBasedCorsConfigurationSource类 import org.springframework.web.filter.CorsFilter; // 导入CorsFilter类 import org.springframework.web.servlet.config.annotation.InterceptorRegistry; // 导入InterceptorRegistry类 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; // 导入WebMvcConfigurer接口 @Configuration // 标记该类为配置类 public class MyWebMvcConfigurer implements WebMvcConfigurer { // 实现WebMvcConfigurer接口 @Bean // 将方法返回的对象注册为Spring容器中的Bean public TokenInterceptor tokenInterceptor(){ // 定义tokenInterceptor方法,返回TokenInterceptor对象 return new TokenInterceptor(); // 创建并返回TokenInterceptor实例 } @Override // 重写父类的方法 public void addInterceptors(InterceptorRegistry registry) { // 定义addInterceptors方法,参数为InterceptorRegistry对象 registry.addInterceptor(tokenInterceptor()) // 添加自定义拦截器 .addPathPatterns("/**") // 设置拦截所有路径 .excludePathPatterns("/login"); // 排除登录路径不拦截 } //使用CorsFilter解决跨域的问题 @Bean // 将方法返回的对象注册为Spring容器中的Bean public CorsFilter corsFilter(){ // 定义corsFilter方法,返回CorsFilter对象 CorsConfiguration corsConfiguration = new CorsConfiguration(); // 创建CorsConfiguration实例 //允许跨域请求的域名 corsConfiguration.addAllowedOrigin("*"); // 允许所有域名进行跨域请求 corsConfiguration.addAllowedMethod("*"); // 允许所有HTTP方法进行跨域请求 //允许任何头部 corsConfiguration.addAllowedHeader("*"); // 允许所有头部信息进行跨域请求 UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); // 创建UrlBasedCorsConfigurationSource实例 urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration); // 注册跨域配置到URL模式 CorsFilter corsFilter = new CorsFilter(urlBasedCorsConfigurationSource); // 创建CorsFilter实例 return corsFilter; // 返回CorsFilter实例 } }