同期会议和记住我

时间:2018-05-14 01:37:00

标签: spring-mvc spring-boot spring-security remember-me

我这样做了:

  1. 用户登录并查看place1中的Remember-me框。

  2. 用户登录并选中place2中的Remember-me框 相同帐户,然后用户退出。

  3. 有一个问题:

    • 用户在place2中注销后,用户使用Remember-me持久性令牌 在数据库中也删除了(我使用 PersistentTokenBasedRememberMeServices)。

    我想这样做:

    • 用户登录并且不在place2中检查remember-me,然后注销,它 不会影响数据库中的持久性令牌。

    我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我做了如下,并且说得好!

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);
        }
    }
}