【发布时间】:2014-11-14 21:14:27
【问题描述】:
我正在研究基于 Spring Security Java 的配置。
我创建了自己的MyAuthenticationProvider,我想在ProviderManager 中注册它(AuthenticationManager 的单个实例)。
我发现ProviderManager 有一个提供者列表,我可以在其中注册我的单身
MyAuthenticationProvider.
这是我的配置部分:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(MyAuthenticationProvider);
}
}
发现AuthenticationManagerBuilder有parentAuthenticationManager、defaultUserDetailsService等很多字段。
我的问题是:
- 添加
AuthenticationManagerBuilderauth 的@Autowired注释来自哪里?AuthenticationManagerBuilder是否已在应用程序上下文中创建? - 注入的
AuthenticationManagerBuilder的默认状态是什么?默认状态下,我的意思是会有一些parentAuthenticationManager、authenticationProviders 已经注册在AuthenticationManagerBuilder中吗? - 如果我添加
auth.authenticationProvider(MyAuthenticationProvider),这是否意味着我要在AuthenticationManagerBuilder中添加一个提供程序? -
这是什么意思?取自 Spring 文档
configureGlobal 方法的名称并不重要。然而,它 仅在类中配置 AuthenticationManagerBuilder 很重要 使用 @EnableWebSecurity、@EnableWebMvcSecurity 进行注释, @EnableGlobalMethodSecurity 或 @EnableGlobalAuthentication。正在做 否则会产生不可预知的结果。
【问题讨论】:
标签: java spring-security