package org.springblade.common.config; import org.springblade.core.launch.constant.AppConstant; import org.springblade.core.oauth2.endpoint.OAuth2SocialEndpoint; import org.springblade.core.oauth2.endpoint.OAuth2TokenEndPoint; import org.springblade.core.secure.registry.SecureRegistry; import org.springblade.core.tool.utils.StringPool; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * Blade配置 * * @author Chill */ @Configuration(proxyBeanMethods = false) public class BladeConfiguration implements WebMvcConfigurer { /** * 安全框架配置 */ @Bean public SecureRegistry secureRegistry() { SecureRegistry secureRegistry = new SecureRegistry(); secureRegistry.setEnabled(true); secureRegistry.excludePathPatterns("/blade-auth/**"); secureRegistry.excludePathPatterns("/blade-system/tenant/info"); secureRegistry.excludePathPatterns("/blade-flow/process/resource-view"); secureRegistry.excludePathPatterns("/blade-flow/process/diagram-view"); secureRegistry.excludePathPatterns("/blade-flow/manager/check-upload"); secureRegistry.excludePathPatterns("/doc.html"); secureRegistry.excludePathPatterns("/swagger-ui.html"); secureRegistry.excludePathPatterns("/static/**"); secureRegistry.excludePathPatterns("/webjars/**"); secureRegistry.excludePathPatterns("/swagger-resources/**"); secureRegistry.excludePathPatterns("/druid/**"); return secureRegistry; } /** * 跨域配置 */ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOriginPatterns("*") .allowedHeaders("*") .allowedMethods("*") .maxAge(3600) .allowCredentials(true); } /** * 给OAuth2服务端添加前缀 */ @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.addPathPrefix(StringPool.SLASH + AppConstant.APPLICATION_AUTH_NAME, c -> c.isAnnotationPresent(RestController.class) && ( OAuth2TokenEndPoint.class.equals(c) || OAuth2SocialEndpoint.class.equals(c)) ); } }