spring-security 没有WebSecurityConfiguererAdapter的Spring安全,注册两个身份验证提供者

kulphzqa  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(128)

由于WebSecurityConfiguererAdapter的使用,我不确定如何实现我的两个自定义AuthenticationProvider类,如果我只使用其中一个AuthenticationProvider,一切都可以正常工作,但是有两个会使它们都无法正常工作。我尝试为它们提供@Order注解,但是也不起作用。我如何注册我的自定义AuthenticationProviders,使它们能够沿着,并在其支持方法中定义的类匹配时被调用。)
第一个

fhity93d

fhity93d1#

我从我的自定义AuthenticationProviders中删除了@Component注解,我在SecurityConfiguration类中为每个自定义AuthenticationProvider创建了@Beans,我直接调用了它们的构造函数,而不是使用springs DI。然后在我的AthenticationManager Bean中使用它们,我返回了一个ProviderManager
说明代码片段:

@Configuration
class ProdSecurityConfiguration {

    @Bean
    fun credentialsAuthProvider(): AuthenticationProvider {
        return CredentialsAuthProvider()
    }

    @Bean
    fun credentialsAuthProvider2(): AuthenticationProvider {
        return CredentialsAuthProvider2()
    }

    @Bean
    fun authenticationManager(): AuthenticationManager {
        return ProviderManager(listOf(credentialsAuthProvider(), credentialsAuthProvider2()))
    }

    @Bean
    fun filterChain(http: HttpSecurity): SecurityFilterChain {
        http.csrf().disable().cors().disable()
        http.authorizeRequests()
            .antMatchers("/login", "/register").permitAll().anyRequest().authenticated().and().sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        return http.build()
    }
}

相关问题