Параллельная сессия и Запомнить меня - PullRequest
0 голосов
/ 14 мая 2018

Я сделал это:

  1. Пользователь вошел в систему и установил флажок Запомнить меня на месте1.

  2. Пользователь вошел в систему и не установите флажок Запомнить меня на месте2 с та же учетная запись, затем пользователь выходит из системы.

Есть проблема:

  • после того, как пользователь вышел из системы на месте 2, постоянный токен пользователя Remember-me в базе тоже удалили (пользуюсь PersistentTokenBasedRememberMeServices). * * Тысяча двадцать-одна

Я хочу сделать:

  • пользователь входит в систему и не проверяет запомнить меня на месте2, а затем выйти из системы, это не повлияет на постоянный токен в базе данных.

Как я могу это исправить?

1 Ответ

0 голосов
/ 16 мая 2018

Я сделал следующее, и это хорошо сформулировано!

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