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<String> 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);
|
}
|
|
}
|