首页 文章

Spring Security Java Config - 自定义AuthenticationProvider和UserDetailsService

提问于
浏览
8

我使用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的方法是什么?

1 回答

  • 5

    以下是自定义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 */
        }
    }
    

相关问题