【问题标题】:Concurrent Session and Remember-me并发会议和记住我
【发布时间】:2018-10-23 15:08:32
【问题描述】:
我这样做了:
用户登录并选中“记住我”框1。
用户已登录并且未选中“记住我”框 2
相同帐户,然后用户退出。
有问题:
- 用户就地注销后 2,用户的 Remember-me 持久令牌
在数据库中也被删除(我使用
PersistentTokenBasedRememberMeServices)。
我想做:
- 用户登录并没有检查remember-me in place2,然后注销,它
不会影响数据库中的持久令牌。
我该如何解决这个问题?
【问题讨论】:
标签:
spring-mvc
spring-boot
spring-security
remember-me
【解决方案1】:
我做了如下,而且措辞很好!
public class MyRememberMeService extends PersistentTokenBasedRememberMeServices {
public MyRememberMeService(String key, UserDetailsService userDetailsService, PersistentTokenRepository tokenRepository) {
super(key, userDetailsService, tokenRepository);
}
@Override
public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
String rememberMeCookie = extractRememberMeCookie(request);
if (rememberMeCookie == null || rememberMeCookie.length() == 0) {
if (logger.isDebugEnabled()) {
logger.debug("Logout of user "
+ (authentication == null ? "Unknown" : authentication.getName()));
}
cancelCookie(request, response);
} else {
super.logout(request, response, authentication);
}
}
}