将此注释添加到
@Configuration
类以获得Spring 任何WebSecurityConfigurer
或更多版本中定义的安全配置 可能通过扩展WebSecurityConfigurerAdapter
基类和 压倒个别方法:
或者这个@EnableWebSecurity
描述的,用于在我们的项目中启用SpringSecurity。
但我的问题是,即使我没有使用@EnableWebSecurity
注释我的任何课程仍然是应用程序提示输入用户名和密码。(默认行为)
因此,我收到@EnableWebSecurity
且没有@EnableWebSecurity
的相同行为。
有人可以解释这个注释究竟是什么?
答案 0 :(得分:21)
@EnableWebSecurity
是标记注释。它允许Spring查找(它是@Configuration
,因此@Component
)并自动将该类应用于全局WebSecurity
。
如果我没有使用
@EnableWebSecurity
注释我的任何课程,那么应用程序会提示输入用户名和密码。
是的,这是默认行为。如果查看类路径,可以找到标有该注释的其他类(取决于您的依赖项):
SpringBootWebSecurityConfiguration
; FallbackWebSecurityAutoConfiguration
; WebMvcSecurityConfiguration
。仔细考虑它们,关闭所需的配置,或覆盖其行为。
答案 1 :(得分:12)
Spring Boot Reference Guide很好地解释了它。如果可以使用@EnableWebSecurity
进行搜索:
要完全关闭默认Web应用程序安全配置,您可以添加
@EnableWebSecurity
的bean(这不会禁用身份验证管理器配置或Actuator的安全性)。要自定义它,通常使用WebSecurityConfigurerAdapter
类型的外部属性和bean(例如,添加基于表单的登录)。...
如果添加
@EnableWebSecurity
并禁用Actuator安全性,除非添加自定义WebSecurityConfigurerAdapter
,否则您将获得整个应用程序的默认基于表单的登录。...
如果在应用程序的任何位置定义
@Configuration
@EnableWebSecurity
,它将关闭Spring Boot中的默认Webapp安全设置(但启用Actuator的安全性)。要调整默认设置,请尝试在security.*
中设置属性(有关可用设置的详细信息,请参阅SecurityProperties
)和常用应用程序属性的安全部分。
显然,要打开默认的Web应用程序安全配置并添加自己的安全配置。
答案 2 :(得分:1)
@EnableWebSecurity
用于Spring Security Java配置。在扩展了@configuration
的安全Java类之上,添加带有WebSecurityConfigurerAdapter
的注释。
覆盖configure(WebSecurity web)
和configure(HttpSecurity http)
。这是替换基于XML的配置(例如和)。这样,您可以限制来自特定网址的请求网址,还可以启用基于表单的登录。