@EnableWebSecurity在春天有什么用处

时间:2017-06-21 09:01:10

标签: java spring-boot spring-security annotations

根据spring docs

  

将此注释添加到@Configuration类以获得Spring   任何WebSecurityConfigurer或更多版本中定义的安全配置   可能通过扩展WebSecurityConfigurerAdapter基类和   压倒个别方法:

或者这个@EnableWebSecurity描述的,用于在我们的项目中启用SpringSecurity。

但我的问题是,即使我没有使用@EnableWebSecurity注释我的任何课程仍然是应用程序提示输入用户名和密码。(默认行为)

因此,我收到@EnableWebSecurity且没有@EnableWebSecurity的相同行为。

有人可以解释这个注释究竟是什么?

3 个答案:

答案 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的配置(例如和)。这样,您可以限制来自特定网址的请求网址,还可以启用基于表单的登录。