2016-10-30 4 views
0

Есть ли причина, по которой выключение с одного устройства удаляет все постоянные токены входа (помнить-меня) для пользователя?Почему Spring при сохранении памяти помнит, что я удаляю все активные маркеры при выходе из системы?

В моем случае, например, пользователь может войти в систему с рабочего стола и планшета, а пользователь, выходящий с рабочего стола, не должен вызывать токен mem-памяти, используемый планшетами для удаления.

Текущая реализация в JdbcTokenRepositoryImpl принимает только имя пользователя:

public void removeUserTokens(String username) { 
    getJdbcTemplate().update(removeUserTokensSql, username); 
} 

поэтому я создал пользовательскую реализацию RememberMeServices и PersistentTokenRepository, что только позволяют определенный ряд, чтобы исключить для пользователя:

public void removeUserTokens(String username, String presentedSeries) { 
    getJdbcTemplate().update(removeUserTokensSql, username, presentedSeries); 
} 

Это безопасно?

ответ

1

Запомнить меня не о том, чтобы быть запомненным после выхода из системы. Если пользователь выдает явное действие для выхода из системы, токен «запомнить меня» должен быть недействительным. Подумайте, кто-то использует общедоступный компьютер, который случайно выбирает меня. Если они явно выходят из системы, токен «запомнить меня» должен быть недействительным.

Запомнить меня только о том, чтобы быть запомненным после окончания сессии. Причина в том, что исторически сеансы были сохранены в памяти. Если было слишком много активных сеансов, это может вызвать ошибки в памяти. Теперь нет необходимости в том, чтобы сеанс можно было легко сохранить во внешнем хранилище данных, используя что-то вроде Spring Session.

+0

Спасибо за ваш ответ, я прочитал больше о Spring Session, и, похоже, это то, что я ищу. Правильно ли считать, что помните, что я устарел по сравнению с Spring Session? – W4pp

+1

Весенняя сессия может полностью заменить Запомнить меня, но я бы не счел ее устаревшей. Причина в том, что в некоторых ситуациях пользователи могут не использовать Spring Session (т. Е. Политику) –