当前的Spring应用程序需要非常特定的用户身份验证方式:

用户通过具有用户名(输入字段)和身份验证方法(下拉框)以及可能需要密码(输入字段)的表单进入应用程序,则用户应该能够通过提供的身份验证方法登录应用程序,并且凭据(如果使用LDAP等,则可能不需要用户名和密码)

所以在这种情况下,我想

<AuthenticationManager>
    <BASICAuthenticationProvider/>
    <DAOAuthenticationProvider/>
    <LDAPAuthenticationProvider/>
    ......
</AuthenticationManager>


不适用于这种情况。我是Spring Security的新手,经过很少的研究,我发现有几种地方可能需要针对这种情况进行自定义:AuthenticationManagerAuthenticationProviderPreAuthenticationFilter等,但不知道从哪里开始。
那么哪些类应该被重写? AuthenticationProvider?还是预身份验证?甚至是AuthenticationManager? Spring安全性似乎有很多,但我不确定是什么原因。我检查了官方文档,但找不到类似于这种情况的解决方案。

提前致谢。

最佳答案

您需要从这样的事情开始

<authentication-manager>
    <authentication-provider user-service-ref="authenticationService">
    </authentication-provider>
</authentication-manager>


AuthenticationService需要实现UserDetailsS​​ervice(这是加载用户特定数据的核心接口。)。在这里,您可以覆盖loadUserByUsername方法,并提供一个Dao,可以从db获取用户详细信息。

09-27 18:06