我使用java配置来配置Spring Security,并且我已经定制了AuthenticationProvider和自定义UserDetailsService,以添加额外的登录字段 http://forum.spring.io/forum/spring-projects/security/95715-extra-login-fields
我很难通过使用java配置将两个自定义类添加到Spring Security框架中。 作为AuthenticationProvider#authenticationProvider的java doc描述:
根据自定义AuthenticationProvider添加身份验证 传入。自AuthenticationProvider实现以来 未知,所有自定义必须在外部完成 立即返回AuthenticationManagerBuilder。
此方法无法确保UserDetailsService可用 对于getDefaultUserDetailsService()方法。
所以我的问题是在这种情况下设置UserDetailsService的方法是什么?
答案 0 :(得分:6)
以下是自定义AuthenticationProvider和自定义UserDetailsService的示例:
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void registerGlobalAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(customAuthenticationProvider());
}
@Bean
AuthenticationProvider customAuthenticationProvider() {
CustomAuthenticationProvider impl = new CustomAuthenticationProvider();
impl.setUserDetailsService(customUserDetailsService());
/* other properties etc */
return impl ;
}
@Bean
UserDetailsService customUserDetailsService() {
/* custom UserDetailsService code here */
}
}