我正在使用带有弹簧安全性的GWT。我有一个自定义身份验证提供程序,我执行所有身份验证。如何在不使用UserDetailsService的情况下配置记住我功能?我没有使用LDAP。
我的AppliationContext_security.xml
<http auto-config="true" entry-point-ref="UnauthorizedEntryPoint"
create-session="always">
<form-login authentication-success-handler-ref="authenticationSuccessHandler"
authentication-failure-handler-ref="authenticationFailureHandler" />
<logout success-handler-ref="logoutSuccessHandler"
invalidate-session="true" />
<intercept-url pattern="/**/myapp.rpc" access="ROLE_USER" />
<custom-filter before="CONCURRENT_SESSION_FILTER" ref="XSRFAttackFilter" />
</http>
<authentication-manager>
<authentication-provider ref="myAuthenticationProvider" />
</authentication-manager>
在我的自定义身份验证提供程序中,
@Override
public Authentication authenticate(Authentication authentication)
throws AuthenticationException {
String username = (String) authentication.getPrincipal();
String password = (String) authentication.getCredentials();
boolean response = loginmanager.authenticateUser(username, password,
((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest().getSession());
if (!response) {
throw new BadCredentialsException(
"Invalid Credentials.");
}
Authentication authentication = ...
authentication.setAuthenticated(true);
return authentication;
}
非常感谢任何帮助。
答案 0 :(得分:0)
您需要创建一个自定义UserDetailsService
,其中loginmanager
从您TokenBasedRememberMeServices.processAutoLoginCookie()
正在读取的位置获取用户名/密码。请参阅{{1}}的来源,了解其使用方式。