“configure”和“configureGlobal”方法有什么区别?

14

我正在尝试使用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() 方法的目的是什么?

2个回答

3

这个答案对我有帮助。

Spring Security中registerGlobal()、configure()、configureGlobal()和configureGlobalSecurity的区别

如果你已经扩展了类,比如WebMvcConfiguratorAdapter,那么你有两种设置安全性的选择。

  1. 使用configureGlobal()方法:

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

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

2
正如spring security文档所述:

configureGlobal方法的名称并不重要。然而,在一个类中配置AuthenticationManagerBuilder时,只能使用@EnableWebSecurity@EnableGlobalMethodSecurity@EnableGlobalAuthentication注解进行标注。否则会产生不可预测的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接