当前的Spring应用程序需要非常特定的用户身份验证方式:
用户通过具有用户名(输入字段)和身份验证方法(下拉框)以及可能需要密码(输入字段)的表单进入应用程序,则用户应该能够通过提供的身份验证方法登录应用程序,并且凭据(如果使用LDAP等,则可能不需要用户名和密码)
所以在这种情况下,我想
<AuthenticationManager>
<BASICAuthenticationProvider/>
<DAOAuthenticationProvider/>
<LDAPAuthenticationProvider/>
......
</AuthenticationManager>
不适用于这种情况。我是Spring Security的新手,经过很少的研究,我发现有几种地方可能需要针对这种情况进行自定义:
AuthenticationManager
,AuthenticationProvider
,PreAuthenticationFilter
等,但不知道从哪里开始。那么哪些类应该被重写? AuthenticationProvider?还是预身份验证?甚至是AuthenticationManager? Spring安全性似乎有很多,但我不确定是什么原因。我检查了官方文档,但找不到类似于这种情况的解决方案。
提前致谢。
最佳答案
您需要从这样的事情开始
<authentication-manager>
<authentication-provider user-service-ref="authenticationService">
</authentication-provider>
</authentication-manager>
AuthenticationService需要实现UserDetailsService(这是加载用户特定数据的核心接口。)。在这里,您可以覆盖loadUserByUsername方法,并提供一个Dao,可以从db获取用户详细信息。