spring security自定义在AuthenticationManager中注入AuthenticationProvider

时间:2016-08-02 11:22:59

标签: java spring authentication spring-security spring-java-config

可能是一个新手问题。我想注入CustomAuthenticationProviderInside Spring AuthenticationManager。我在网上发现了很多这样的例子:

<authentication-manager>

    <authentication-provider ref="CustomAuthenticationProvider"/>

</authentication-manager>

如何使用Java Config类做到这一点?

1 个答案:

答案 0 :(得分:0)

Spring提供了一个AuthenticationManager的默认实现,它是ProviderManager。 ProviderManager有一个构造函数,它接受一组身份验证提供程序

public ProviderManager(List<AuthenticationProvider> providers) {
    this(providers, null);
}

如果您愿意,可以通过扩展ProviderManager来播放它

public class MyAuthenticationManager extends ProviderManager implements AuthenticationManager{

public MyAuthenticationManager(List<AuthenticationProvider> providers) {
    super(providers);
    providers.forEach(e->System.out.println("Registered providers "+e.getClass().getName()));
   }
}

然后在Java安全配置中,您可以添加自定义身份验证管理器。

@Override
protected AuthenticationManager authenticationManager() throws Exception {
    return new MyAuthenticationManager(Arrays.asList(new CustomAuthenticationProvider()));
}