实现一个记住我的春天 - 社交 [英] Implementing a Remember me for Spring-Social
本文介绍了实现一个记住我的春天 - 社交的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个启用Spring安全的项目。我已经实现了一个记住我使用登录表单工作正常。但我也登录表单google / facebook的社交登录工作正常。问题是他们不记得用户。有没有办法设置类似的记住我功能?
I have a spring security enabled project. I have implemented a remember me using the login form which works fine. But I also have on the login form social logins from google/ facebook which work fine. The problem is that they do not remember the user. Is there a way to set a similar "remember me" functionality?
我正常登录页面的当前弹簧配置:
My current spring config for the normal login page:
<http access-denied-page="/login?authorization_error=true"
disable-url-rewriting="true" authentication-manager-ref="formAuthenticationManager"
xmlns="http://www.springframework.org/schema/security">
<intercept-url pattern="/account/**" access="ROLE_USER" />
<remember-me key="iRemember"
token-validity-seconds="1209600" user-service-ref="formClientDetailsUserService" />
<form-login authentication-failure-url="/login?authentication_error=true"
default-target-url="/account/" login-page="/login"
login-processing-url="/login.do" />
<logout logout-success-url="http://example.com" logout-url="/logout" />
<anonymous />
</http>
推荐答案
我们切换到Java配置并创建了记住我的服务:
We switched to Java config and created the remember me service:
@Bean
public MyRememberMeServices myRememberMeServices(){
MyRememberMeServices service = new MyRememberMeServices (REMEMBERME_KEY, formUserDetailsService);
service.setAlwaysRemember(true);
service.setCookieName("xxxx");
service.setParameter("_spring_security_remember_me");
service.setTokenValiditySeconds(123);
return service;
};
然后在社交登录的SignInAdapter实现上:
and then on the SignInAdapter implementation for the social login:
@Override
public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
// load the user based on the account id
// create an authentication object to store in context
// set remember-me cookie
myRememberMeServices.onLoginSuccess(
(HttpServletRequest) request.getNativeRequest(),
(HttpServletResponse) request.getNativeResponse(),
authentication);
// forward to the original URL
return extractOriginalUrl(request);
}
这篇关于实现一个记住我的春天 - 社交的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文