Xtr*_*ica 13 java spring-security
我正在设置我的Spring Security(v4.0.1)Web应用程序.我希望有两个身份验证提供程序,一个用于管理管理员帐户的"内存"提供程序和一个引用我自己的实现的自定义提供程序.系统应首先尝试针对"内存中"提供程序进行身份验证,然后针对自定义提供程序进行身份验证.我的代码看起来像这样:
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth,
AuthenticationProvider provider) throws Exception {
auth.inMemoryAuthentication()
.withUser("admin")
.password("s3cr3t")
.authorities("ADMIN");
auth.authenticationProvider(provider);
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码使框架首先尝试我的自定义实现.这有点道理,因为该AuthenticationManagerBuilder#authenticationProvider方法将内部列表中的Provider添加到内部列表中AuthenticationManagerBuilder#inMemoryAuthentication.我怎么能设法让它工作?
Ran*_*niz 24
您可以InMemoryUserDetailsManagerConfigurer手动创建并告诉它在完成配置后自行AuthenticationManagerBuilder配置,以便AuthenticationProvider在自定义之前安装它:
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth,
AuthenticationProvider provider) throws Exception {
inMemoryConfigurer()
.withUser("admin")
.password("s3cr3t")
.authorities("ADMIN")
.and()
.configure(auth);
auth.authenticationProvider(provider);
}
private InMemoryUserDetailsManagerConfigurer<AuthenticationManagerBuilder>
inMemoryConfigurer() {
return new InMemoryUserDetailsManagerConfigurer<>();
}
Run Code Online (Sandbox Code Playgroud)
通常情况下会InMemoryUserDetailsManagerConfigurer创建并添加到配置器列表中,这些配置器应该在AuthenticationManager构建时应用- 这是在您安装自定义之后AuthenticationProvider.
| 归档时间: |
|
| 查看次数: |
6286 次 |
| 最近记录: |