package com.dc.smart.core.config;
import cn.dev33.satoken.interceptor.SaRouteInterceptor;
import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
import org.springframework.validation.beanvalidation.SpringValidatorAdapter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.util.ArrayList;
import java.util.List;
/**
* saToken 路由拦截器
* @author coco
* @date 2021/9/6
*/
@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {
// 注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
List<String> urls = new ArrayList<>();
urls.add("/favicon.ico");
urls.add("/error");
urls.add("/swagger-resources/**");
urls.add("/webjars/**");
urls.add("/v2/**");
urls.add("/doc.html");
urls.add("**/swagger-ui.html");
urls.add("/swagger-ui.html/**");
urls.add("/sso/**");
urls.add("/isLogin");
urls.add("/getSsoAuthUrl");
urls.add("/doLoginByTicket");
urls.add("/getSsoLoginTicket");
urls.add("/getSsoLogin");
urls.add("/sso/userinfo");
// 注册Sa-Token的路由拦截器,并排除登录接口或其他可匿名访问的接口地址 (与注解拦截器无关)
registry.addInterceptor(new SaRouteInterceptor())
.addPathPatterns("/**")
.excludePathPatterns(urls);
}
// 资源映射增加
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
WebMvcConfigurer.super.addResourceHandlers(registry);
}
// <-cors
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowCredentials(true)
.allowedOriginPatterns("*")
.allowedHeaders("*")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600);
}
// cors->
// <-Validator
@Bean
public Validator validator() {
ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
.configure()
// 快速失败(Fail Fast)模式,设置为true即可,如果想验证全部,则设置为false或者取消配置即可
.failFast(true)
.buildValidatorFactory();
return validatorFactory.getValidator();
}
/**
* requestParam方式的校验
* @return
*/
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
postProcessor.setValidator(validator());
return postProcessor;
}
/**
* 让spring的请求校验Validator使用我们上边的validator,让设置的failFast生效
* @return
*/
@Override
public org.springframework.validation.Validator getValidator() {
return new SpringValidatorAdapter(validator());
}
// Validator->
}
satoken过滤swagger
最新推荐文章于 2025-03-04 22:55:16 发布