我正在使用Spring Boot学习Spring Security框架,而我不喜欢启动的一件事是它的默默无闻。发生了如此多的魔术,故障排除和自定义是反复试验,猜测自动配置的内容和位置。这在安全领域是高风险的,因为错误配置的系统可能会受到损害。
我想用自己的实现替换springSecurityFilterChain
。在vanilla Spring中,我会在DelegatingFilterProxy
中使用不同的名称注册web.xml
,并实现相应的bean。但是,如果存在jar,则Spring启动显然会自动注册springSecurityFilterChain
,现在我不确定自动配置是否会以传统方式声明springSecurityFilterChain
,或者导致系统配置错误?
一般来说,我想更好地了解Spring启动,而不仅仅是猜测发生了什么,在哪里以及如何控制该区域。
答案 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)
告诉谁可以做什么。