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

wgu*_*gui 8 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的方法是什么?

Rit*_*esh 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 */
    }
}
Run Code Online (Sandbox Code Playgroud)