2017-06-21 52 views
2

spring docs什么是春季使用@EnableWebSecurity的

这个注释添加到@Configuration类,以便在任何WebSecurityConfigurer以上 可能定义的春天 安全配置通过扩展WebSecurityConfigurerAdapter基类, 压倒一切的各个方法:

或作为该@EnableWebSecurity描绘,用于启用SpringSecurity在我们的项目。

但我的问题是,即使我不@EnableWebSecurity还是应用提示输入用户名和密码,任何标注我的课。(默认行为)

所以我接受了与@EnableWebSecurity和不相同的行为@EnableWebSecurity

有人能解释一下这个注释到底是什么吗?

回答

3

@EnableWebSecurity是扮演标记角色的注释。它允许Spring找到(因为它是一个@Configuration这是一个@Component)并自动将其应用于全局WebSecurity

如果我没有用@EnableWebSecurity注释我的任何课程,那么应用程序仍然会提示输入用户名和密码。

是的,这是默认行为。如果您查看了类路径,则可以找到标有该注释的其他类(取决于您的依赖关系):

  • SpringBootWebSecurityConfiguration;
  • FallbackWebSecurityAutoConfiguration;
  • WebMvcSecurityConfiguration

仔细考虑它们,关闭所需的配置或覆盖其行为。

+0

请您详细说明“将其应用于全球'WebSecurity'”吗? –

0

Spring Boot Reference Guide对此有很好的解释。如果能与@EnableWebSecurity搜索:

要关闭默认的Web应用程序的安全配置完全可以用@EnableWebSecurity添加一个bean(这不会禁用认证管理器配置或执行器的安全性)。要定制它,通常使用WebSecurityConfigurerAdapter类型的外部属性和bean(例如,添加基于表单的登录)。

...

如果添加@EnableWebSecurity,也禁止执行器的安全性,你会除非你添加自定义WebSecurityConfigurerAdapter得到整个应用程序的基于表单的默认登录。

...

如果您在应用程序的任何位置定义了@Configuration@EnableWebSecurity,它将关闭Spring Boot中的默认Web应用程序安全设置(但启用Actuator的安全性)。要调整默认值,请尝试设置属性security.*(有关可用设置的详细信息,请参阅SecurityProperties)和常用应用程序属性的安全部分。

显然,这是关闭默认的Web应用程序安全配置,并添加自己的。