使用@EnableWebSecurity 时,configureGlobal(..) 是不是需要@Autowired?

Posted

技术标签:

【中文标题】使用@EnableWebSecurity 时,configureGlobal(..) 是不是需要@Autowired?【英文标题】:Is @Autowired required on configureGlobal(..) when using @EnableWebSecurity?使用@EnableWebSecurity 时,configureGlobal(..) 是否需要@Autowired? 【发布时间】:2018-01-29 00:33:48 【问题描述】:

在此示例中,configureGlobal 方法上有一个 @Autowired 注释:

    @EnableWebSecurity
    public class MultiHttpSecurityConfig 
      @Autowired
      public void configureGlobal(AuthenticationManagerBuilder auth) 
          auth
              .inMemoryAuthentication()
                  .withUser("user").password("password").roles("USER").and()
                  .withUser("admin").password("password").roles("USER", "ADMIN");
      

这是必要的还是 Spring 会自动将 AuthenticationBuilder 注入到带有 @EnableWebSecurity? 注释的方法上?

从when-to-use-spring-securitys-antmatcher拉取代码sn-p

【问题讨论】:

【参考方案1】:

根据 Spring 文档,@EnableWebSecurity 是一个注释,它只会关闭默认的 Web 应用程序安全配置,以便让您添加一些自定义功能,例如 configureGlobal

configureGlobal 应该是 @Autowired 以便获取 AuthenticationManagerBuilder bean 并为应用程序定义身份验证类型。

总而言之,@EnableWebSecurity 不注入 bean,它只提供了一种自定义 Web 安全应用程序的方法。

@EnableWebSecurity

【讨论】:

以上是关于使用@EnableWebSecurity 时,configureGlobal(..) 是不是需要@Autowired?的主要内容,如果未能解决你的问题,请参考以下文章

Spring web security:@EnableWebSecurity 过时了吗?

java Spring @EnableResourceServer 和 @EnableWebSecurity

Spring security 的 @EnableWebSecurity 与 oauth 的 @EnableResourceServer

@EnableWebSecurity 和 @EnableWebFluxSecurity 有啥区别?

@EnableWebSecurity 和 @EnableWebMvcSecurity 有啥区别?

如何在@WebMvcTest 测试中忽略@EnableWebSecurity 注释类