Spring中@EnableWebSecurity有什么用?

新手上路,请多包涵

根据 Spring 文档

将此注释添加到 @Configuration 类,以在任何 WebSecurityConfigurer 中定义 Spring Security 配置,或者更可能通过扩展 WebSecurityConfigurerAdapter 个别基类方法:

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

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

所以我在使用 @EnableWebSecurity 而没有使用 @EnableWebSecurity 时收到相同的行为。

有人可以解释一下这个注释到底是做什么用的吗?

原文由 Mehraj Malik 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

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

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

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

  • SpringBootWebSecurityConfiguration ;
  • FallbackWebSecurityAutoConfiguration ;
  • WebMvcSecurityConfiguration

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

原文由 Andrew Tobilko 发布,翻译遵循 CC BY-SA 4.0 许可协议

Spring Boot 参考指南 对此进行了很好的解释。如果您使用 @EnableWebSecurity 搜索:

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

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

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

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

原文由 Sanghyun Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题