- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Spring Security 基于表单的登录当前包含一个表单和默认的 LdapAuthenticationProvider,我能够正确进行身份验证。但有一个新的要求来检查用户是否已启用。此信息位于数据库而不是 LDAP 中。那么我该怎么做呢?
我是否应该考虑使用 AbstractAuthenticationProcessingFilter 并在 successAuthentication 方法中执行额外检查
或者有更好的方法来做到这一点。
最佳答案
我想说,扩展UsernamePasswordAuthenticationFilter
并覆盖attemptAuthentication()
是一个好方法。在 attemptAuthentication()
中,您可以检查数据库数据和 LDAP 数据。您可以使用 UserDetailsService
加载用户信息,例如 this .
另一种方法是(正如您自己建议的那样)扩展 AbstractAuthenticationProcessingFilter
并在 FORM_LOGIN 过滤器之后运行过滤器,如下所示:
<http ...>
...
<custom-filter after="FORM_LOGIN_FILTER" ref="myAuthenticationProcessingFilter" />
</http>
一个好主意可能是为 LDAP 和 DB 身份验证创建 2 个单独的过滤器,并一个接一个地运行。这样您就可以根据需要关闭其中任何一个。
This spring 文档的一部分将帮助您自定义过滤器。
关于java - Spring Security - 两个独立的身份验证信息源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6438093/
有没有人对有关 WWSAPI 及其使用的站点、书籍、教程或其他信息源有一些好的建议? 我在一个使用它的项目中陷入了困境,想要让自己跟上速度。 http://msdn.microsoft.com/en-
我是一名优秀的程序员,十分优秀!