Spring启动时,如何禁用springSecurityFitlerChain的自动配置

时间:2016-12-28 09:20:35

标签: java spring spring-boot spring-security configuration

我正在使用Spring Boot学习Spring Security框架,而我不喜欢启动的一件事是它的默默无闻。发生了如此多的魔术,故障排除和自定义是反复试验,猜测自动配置的内容和位置。这在安全领域是高风险的,因为错误配置的系统可能会受到损害。

我想用自己的实现替换springSecurityFilterChain。在vanilla Spring中,我会在DelegatingFilterProxy中使用不同的名称注册web.xml,并实现相应的bean。但是,如果存在jar,则Spring启动显然会自动注册springSecurityFilterChain,现在我不确定自动配置是否会以传统方式声明springSecurityFilterChain,或者导致系统配置错误?

一般来说,我想更好地了解Spring启动,而不仅仅是猜测发生了什么,在哪里以及如何控制该区域。

3 个答案:

答案 0 :(得分:4)

有很多预配置的东西,但你可以覆盖每一步。 @EnableAutoConfiguration的神奇之处只是方便。 --debug开关应该告诉您更多背景情况。

http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html

答案 1 :(得分:1)

如果您使用Spring Boot 1.4.x(我不确定以前的版本),则可以使用以下某个版本。

@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration.class})

OR

@SpringBootApplication(exclude = { org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration.class})

OR

在application.properties文件中,

  

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration

有时您可能还需要排除org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration课程。

答案 2 :(得分:1)

你真的想要禁用整个安全链吗?我没有看到用例,但如果,那么你根本不需要@EnableWebSecurity。如果您只想调整链,请创建一个注释为@Configuration@EnableWebSecurity的类,该类正在扩展WebSecurityConfigurerAdapter。在那里,你可以通过覆盖configure(HttpSecurity)告诉谁可以做什么。