gpt4 book ai didi

java - Spring 安全: Who passes the AuthenticationManagerBuilder to the WebSecurityConfigurerAdapter configure method?

转载 作者:行者123 更新时间:2023-12-02 09:14:27 24 4
gpt4 key购买 nike

所以我正在研究 Spring Security 的实现。我遇到了一段我无法理解的代码。因此,根据文档,当我们想要自定义 Spring 使用的 AuthenticationManager 时,需要重写以下方法。

protected void configure(AuthenticationManagerBuilder auth) 抛出 java.lang.Exception

我的问题是谁在调用此方法并在此处传递 AuthenticationManagerBuilder 实例。我看到的工作示例不会创建/公开任何 AuthenticationManagerBuilder bean。

另外,我在文档中看到以下内容,

protected AuthenticationManager authenticationManager() throws java.lang.Exception Gets the AuthenticationManager to use.

The default strategy is if configure(AuthenticationManagerBuilder) method is overridden to use the AuthenticationManagerBuilder that was passed in. Otherwise, autowire the AuthenticationManager by type.

被重写的方法是一个 void 方法,可能这就是为什么我对它正在做什么/应该做什么感到更加困惑。

非常感谢任何帮助/指示。我知道它有效,但我似乎不知道如何做到。非常感谢。

最佳答案

假设以下是您遇到的代码

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(MyAuthenticationProvider);
}
}

请注意

  1. WebSecurityConfigurerAdapter提供了便利的基地用于创建 WebSecurityConfigurer 的类实例。
  2. WebSecurityConfigurerAdapter 实现是 Configuration因为它是用@EnableWebSecurity注释的

这里

@EnableWebSecurity 使用 @EnableGlobalAuthentication 进行元注释

@Retention(value=RUNTIME)
@Target(value=TYPE)
@Documented
@Import(value={WebSecurityConfiguration.class,org.springframework.security.config.annotation.web.configuration.SpringWebMvcImportSelector.class,org.springframework.security.config.annotation.web.configuration.OAuth2ImportSelector.class})
@EnableGlobalAuthentication
@Configuration
public @interface EnableWebSecurity

并且@EnableGlobalAuthentication导入AuthenticationConfiguration

@Retention(value=RUNTIME)
@Target(value=TYPE)
@Documented
@Import(value=AuthenticationConfiguration.class)
@Configuration
public @interface EnableGlobalAuthentication

AuthenticationConfiguration 具有以下代码段,将 AuthenticationManagerBuilder 注册为 bean

@Bean
public AuthenticationManagerBuilder authenticationManagerBuilder(
ObjectPostProcessor<Object> objectPostProcessor, ApplicationContext context) {
...
}

关于java - Spring 安全: Who passes the AuthenticationManagerBuilder to the WebSecurityConfigurerAdapter configure method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59118739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com