【发布时间】:2015-03-21 05:12:54
【问题描述】:
ProviderManager 的默认行为是:
尝试使用 AuthenticationProviders List 进行身份验证,直到成功或耗尽所有 AuthenticationProviders。
如果引发 InternalAuthenticationServiceException,ProviderManager 会重新引发此异常,并且不会尝试更多的 AuthenticationProvider。
如果引发 AccountStatusException,ProviderManager 会重新引发此异常,并且不会尝试使用更多 AuthenticationProvider。
我想要什么:
如果是InternalAuthenticationServiceException,那么它应该检查是否允许使用Other AuthenticationProviders,如果是,那就去吧。
如果 AuthenticationException 被抛出,这意味着用户未经身份验证,而不是重新抛出它并向调用者发送未经身份验证的响应,不要尝试使用更多 AuthenticationProviders。
我做了什么:
我创建了自己的 ProviderManager(我们称之为 MyProviderManager)类,并为 authenticate(Authentication authentication) 方法编写了自己的定义。
现在我希望 spring 使用 MyProviderManager 而不是 ProviderManager。
我应该如何配置它? 有办法吗? 如果不是,我可以通过哪些其他方法来更改 ProviderManager 的行为?
【问题讨论】:
-
应该可以。您的安全配置如何?
-
它现在可以工作了......无论如何,谢谢
标签: java spring spring-mvc spring-security