我正在使用CustomAuthentication
提供程序来验证哪个扩展AbstractUserDetailsAuthenticationProvider
。我必须这样做,因为我想对web服务进行身份验证,并且需要userid和password。这是唯一允许我这样做的课程。
现在我面临着为此实现记住我功能的问题,这是我的安全上下文文件 -
<http auto-config="true">
<intercept-url pattern="/j_spring_security_check" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<intercept-url pattern="/dashboard*" access="ROLE_USER" />
<form-login login-page="/login.html" default-target-url="/dashboard1.html#meetings"
authentication-failure-url="/loginFailed.html" />
<logout logout-success-url="/login.html" />
</http>
<beans:bean name="customAuthenticationProvider" class = "com.component.WebServiceUserDetailsAuthenticationProvider"/>
<authentication-manager>
<authentication-provider ref = "customAuthenticationProvider"/>
</authentication-manager>
</beans:beans>
现在我正在尝试实现记住我,但它强制我拥有我不能拥有的用户详细服务,因为我需要用户名和密码来再次验证我的web服务和userdetailservice公开的方法只提供用户名而不是密码,这就是我必须在第一时间使用customAuthentication的原因。
答案 0 :(得分:0)
记住我是另一种验证用户的方法,所以当它收到一个记住我的cookie时,它需要验证它并加载用户提供给应用程序的信息。为此,它使用UserDetailsService
接口。
基本实现TokenBasedRememberMeServices
需要访问密码才能验证令牌。如果您的系统无法提供,那么您就无法使用它。
替代方案是PersistentTokenBasedRememberMeServices
,它使用数据库存储记住我的令牌。它不需要访问密码,但您仍需要实现UserDetailsService
以允许其为经过身份验证的用户加载信息。它返回的UserDetails
对象不需要包含密码,但它应该包含用户名作为最小值,以便您可以告诉谁登录。