【问题标题】:What's the difference between 'configure' and 'configureGlobal' methods?“configure”和“configureGlobal”方法有什么区别?
【发布时间】:2016-05-03 14:38:18
【问题描述】:

我正在使用 Spring Security 配置并发现,配置内存中身份验证的最常见方法是使用 configureGlobal() 方法:

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

  @Autowired
  public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{
    auth
      .inMemoryAuthentication()
        .withUser("user").password("userPwd").roles("USER");
  }
}

但还有另一种使用较少的方法,覆盖 WebSecurityConfigurerAdapter 中的 configure() 方法:

@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

  @Override
  protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth
      .inMemoryAuthentication(
        .withUser("user").password("userPwd").roles("USER");
  }
}

我只是想知道,它们之间有什么区别,使用configureGlobal() 方法而不是configure() 有什么意义?

【问题讨论】:

    标签: java spring spring-security


    【解决方案1】:

    这个答案对我有帮助。

    Difference between registerGlobal(), configure(), configureGlobal(),configureGlobalSecurity in Spring security

    如果您已经扩展了 WebMvcConfiguratorAdapter 之类的类,则您有两种安全设置选择。

    1. 使用configureGlobal()方法:

      • @Configuration类方法。
      • 您可以在维护配置类的同时设置安全性。
      • SpringWebConfig 扩展 WebMvcConfigurerAdapter + @EnableWebSecurity
    2. 覆盖configure() 方法:

      • 特定安全@Configuration 类。
      • 您必须创建一个新的配置类来扩展 WebSecurityConfiguratorAdapter 以进行安全设置。
      • MySecurityConfig 扩展 WebSecurityConfigurerAdapter

    【讨论】:

      【解决方案2】:

      正如spring security doc 所说:

      configureGlobal 方法的名称并不重要。然而,它 重要的是只在一个类中配置AuthenticationManagerBuilder@EnableWebSecurity@EnableGlobalMethodSecurity、 或@EnableGlobalAuthentication。做其他事情是不可预测的 结果。

      【讨论】:

        猜你喜欢
        • 2016-05-15
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-26
        • 2018-05-14
        相关资源
        最近更新 更多