Spring Security Java Config - 自定义AuthenticationProvider和UserDetailsS​​ervice

时间:2014-08-13 00:16:31

标签: spring-security spring-java-config

我使用java配置来配置Spring Security,并且我已经定制了AuthenticationProvider和自定义UserDetailsS​​ervice,以添加额外的登录字段 http://forum.spring.io/forum/spring-projects/security/95715-extra-login-fields

我很难通过使用java配置将两个自定义类添加到Spring Security框架中。 作为AuthenticationProvider#authenticationProvider的java doc描述:

  

根据自定义AuthenticationProvider添加身份验证   传入。自AuthenticationProvider实现以来   未知,所有自定义必须在外部完成   立即返回AuthenticationManagerBuilder。

     

此方法无法确保UserDetailsS​​ervice可用   对于getDefaultUserDetailsS​​ervice()方法。

所以我的问题是在这种情况下设置UserDetailsS​​ervice的方法是什么?

1 个答案:

答案 0 :(得分:6)

以下是自定义AuthenticationProvider和自定义UserDetailsS​​ervice的示例:

@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 */
    }
}