【问题标题】:What is the use of @EnableWebSecurity in Spring?Spring中@EnableWebSecurity有什么用?
【发布时间】:2017-11-24 02:00:39
【问题描述】:

根据Spring documantation

将此注解添加到@Configuration 类以拥有Spring 在任何WebSecurityConfigurer 或更多中定义的安全配置 可能通过扩展WebSecurityConfigurerAdapter 基类和 覆盖单个方法:

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

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

所以我收到与@EnableWebSecurity 和没有@EnableWebSecurity 相同的行为。

谁能解释一下这个注释到底是干什么用的?

【问题讨论】:

    标签: java spring-boot spring-security annotations


    【解决方案1】:

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

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

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

    • SpringBootWebSecurityConfiguration;
    • FallbackWebSecurityAutoConfiguration;
    • WebMvcSecurityConfiguration

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

    【讨论】:

    • 能否详细说明“应用到全球WebSecurity”?
    • 嗨 @andrewtobilko 我使用的是 Spring Security 3.0.5,它没有 EnableWebSecurity 注释。你能建议一个解决方法吗?
    【解决方案2】:

    Spring Boot Reference Guide 对此进行了很好的解释。如果你用@EnableWebSecurity搜索:

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

    ...

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

    ...

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

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

    【讨论】:

      【解决方案3】:

      @EnableWebSecurity用于spring security java配置。在扩展 WebSecurityConfigurerAdapter 的安全 Java 类的顶部添加带有 @configuration 的注释。

      覆盖configure(WebSecurity web)configure(HttpSecurity http)。这是对基于 xml 的配置(如 和 .通过这种方式,您可以限制来自特定 url 的请求 url,也可以启用基于表单的登录。

      【讨论】:

        猜你喜欢
        • 2015-03-10
        • 2020-11-09
        • 2023-03-19
        • 2020-07-20
        • 2019-12-11
        • 2017-10-28
        • 2016-07-20
        • 1970-01-01
        • 2015-06-25
        相关资源
        最近更新 更多