【发布时间】:2016-04-01 23:33:22
【问题描述】:
我正在尝试更好地了解 Spring Boot 的自动配置。特别是,我需要添加一些自定义 spring 安全配置来禁用 HTTP OPTIONS 动词的身份验证,以使我的 CORS 请求正常工作。
默认情况下没有任何自定义配置,SpringBootWebSecurityConfiguration 由 Spring Boot 的自动配置加载。
我想做的是继续使用这个自动配置,但添加一些额外的 http 配置。我试过这个:
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
Logger logger = LogManager.getLogger (SecurityConfiguration.class);
@Override
protected void configure (HttpSecurity http) throws Exception {
logger.info ("--- ALLOW all HTTP OPTIONS Requests");
http.authorizeRequests ().antMatchers (HttpMethod.OPTIONS, "*//**").permitAll ();
}
}
但这并不例外。当我通过SpringBootWebSecurityConfiguration 以及上面的代码进行调试时,我可以看到我的configure-method 和springs 自动配置都已执行,但看起来我的http-configuration 优先。
这是否意味着自动配置只能以 all-or-nothing 的方式使用?或者我可以使用自动配置,但仍然使用一些自定义 antMatcher 来扩展它?
这个场景的最佳实践是什么?
【问题讨论】:
-
你的 SecurityConfiguration 类不应该也用
@EnableWebSecurity注释吗?
标签: spring spring-security spring-boot