Spring Security - 两个独立的身份验证信息源

时间:2011-06-22 10:02:29

标签: java spring-security

我的Spring Security基于表单的登录目前包含一个表单和默认的LdapAuthenticationProvider,我能够正确地进行身份验证。 但是有一个新的要求来检查用户是否已启用。此信息在数据库而不是LDAP中。那我该怎么做?

我是否应该考虑使用AbstractAuthenticationProcessingFilter并在successAuthentication方法中执行额外检查

或者有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

我要说延长UsernamePasswordAuthenticationFilter并覆盖attemptAuthentication()是一个好方法。在attemptAuthentication()中,您可以检查数据库数据和LDAP数据。您可以使用UserDetailsServiceAbstractAuthenticationProcessingFilter加载用户信息。

另一种方法(正如您自己建议的那样)扩展<http ...> ... <custom-filter after="FORM_LOGIN_FILTER" ref="myAuthenticationProcessingFilter" /> </http> 并在FORM_LOGIN过滤器之后运行过滤器,如下所示:

{{1}}

一个好主意可能是为LDAP和DB身份验证制作2个单独的过滤器,然后依次运行。这样,如果需要,您可以关闭其中任何一个。

this春季文档的一部分将帮助您自定义过滤器。