package com.mindskip.xzs.configuration.spring.mvc; import com.mindskip.xzs.configuration.RuoYiConfig; import com.mindskip.xzs.configuration.property.SystemConfig; import com.mindskip.xzs.configuration.spring.wx.TokenHandlerInterceptor; import com.mindskip.xzs.utility.Constants; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; 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.*; import java.io.File; import java.util.List; /** * @version 3.5.0 * @description: The type Web mvc configuration. * Copyright (C), 2020-2021, 武汉思维跳跃科技有限公司 * @date 2021/12/25 9:45 */ @Configuration @RequiredArgsConstructor public class WebMvcConfiguration extends WebMvcConfigurationSupport { private final TokenHandlerInterceptor tokenHandlerInterceptor; private final SystemConfig systemConfig; private final RuoYiConfig ruoYiConfig; @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addRedirectViewController("/", "/student/index.html"); registry.addRedirectViewController("/student", "/student/index.html"); registry.addRedirectViewController("/admin", "/admin/index.html"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**") .addResourceLocations("file:" + ruoYiConfig.getUrl() + File.separator) .setCachePeriod(31556926); registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); super.addResourceHandlers(registry); } @Override public void addInterceptors(InterceptorRegistry registry) { List securityIgnoreUrls = systemConfig.getWx().getSecurityIgnoreUrls(); String[] ignores = new String[securityIgnoreUrls.size()]; registry.addInterceptor(tokenHandlerInterceptor) .addPathPatterns("/api/wx/**") .excludePathPatterns(securityIgnoreUrls.toArray(ignores)); super.addInterceptors(registry); } /** * 跨域配置 */ @Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); // 设置访问源地址 config.addAllowedOrigin("*"); // 设置访问源请求头 config.addAllowedHeader("*"); // 设置访问源请求方法 config.addAllowedMethod("*"); // 有效期 1800秒 config.setMaxAge(1800L); // 添加映射路径,拦截一切请求 UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); // 返回新的CorsFilter return new CorsFilter(source); } }