@EnableWebSecurity在spring有什么用处

按照春季文档

将此批注添加到@Configuration类,以便在任何WebSecurityConfigurer定义Spring Security配置,或者更有可能通过扩展WebSecurityConfigurerAdapter基类并覆盖单个方法:

或者正如@EnableWebSecurity描述的那样,用于在我们的项目中启用SpringSecurity。

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

所以我在@EnableWebSecurity和没有@EnableWebSecurity情况下收到了同样的行为。

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

@EnableWebSecurity是标记注释。 它允许Spring查找(它是@Configuration ,因此是@Component )并自动将该类应用于全局WebSecurity

如果我没有使用@EnableWebSecurity注释我的任何类仍然是应用程序提示输入用户名和密码。

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

  • SpringBootWebSecurityConfiguration ;
  • FallbackWebSecurityAutoConfiguration ;
  • WebMvcSecurityConfiguration

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

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

要完全关闭默认Web应用程序安全配置,您可以添加带有@EnableWebSecurity的bean(这不会禁用身份validation管理器配置或Actuator的安全性)。 要自定义它,通常使用WebSecurityConfigurerAdapter类型的外部属性和bean(例如,添加基于表单的登录)。

如果添加@EnableWebSecurity并禁用Actuator安全性,除非添加自定义WebSecurityConfigurerAdapter否则将获得整个应用程序的默认基于表单的登录。

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

显然,它是打开默认的Web应用程序安全配置并添加您自己的安全配置。