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

2022-09-04 23:01:25

我正在研究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");
  }
}

但是还有另一种方法,它使用得不那么广泛,覆盖了来自以下方法的方法:configure()WebSecurityConfigurerAdapter

@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()


答案 1

这个答案帮助了我。

RegisterGlobal(), configure(), configureGlobal(), configureGlobal Security in Spring Security 之间的区别

如果已经像 扩展类一样,则有两种安全设置选择。WebMvcConfiguratorAdapter

  1. 使用方法:configureGlobal()

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

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

答案 2

正如春季安全文档所说:

方法的名称并不重要。但是,重要的是只在标有 、 或 的类中进行配置。否则会产生不可预测的结果。configureGlobalAuthenticationManagerBuilder@EnableWebSecurity@EnableGlobalMethodSecurity@EnableGlobalAuthentication


推荐