Spring Security — управление сессиями

Как и при входе в qq, вход с одного мобильного телефона переводит другой мобильный телефон в автономный режим.Это называется управлением сеансом.

Это очень просто.По умолчанию вы можете войти в систему несколько раз.После включения несколько входов в систему не разрешены.

Что такое сеанс.

Наше простое понимание заключается в том, что тот же пользователь браузера считается пользователем, например Google, вы добавляете гостевой логин

 Новое окно, которое открывается, является другим сеансом

Это также разные сеансы между разными браузерами.

Нам нужна только простая конфигурация, чтобы реализовать эффект входа в систему здесь и перехода в автономный режим там.

Добавьте следующую конфигурацию в цепочку выполнения безопасности.

 Мы устанавливаем максимальный параллелизм равным 1, то есть пользователь может войти только на одном устройстве.

Примечание. Кто-то здесь добавит это после

 Появляются красные флажки, что делать, добавить и ()

 Здесь, пока вы видите, что возвращаемое значение и равно httpssecurity, вам не нужно продолжать, если нет, просто продолжайте добавлять его.

Это место объясняет, почему есть два и.

 Как показано на рисунке, на этом уровне также можно настроить некоторые другие политики сеанса, такие как: что делать, если их больше одной, пинать ли предыдущую или что делать, то есть есть другие конфигурации в этой политике сеанса, и вы в настоящее время находитесь на этом уровне, является уровнем конфигурации сеанса. Когда вы и (), вы вернетесь к тому же уровню выбора, что и сеанс,

 Точно так же при возврате на этот уровень можно настроить другие стратегии, например, стратегию сеанса, которая находится на этом уровне.

Вы можете думать об этой цепочке как о меню.sessionManagement() позволяет вам войти в слой меню, .maximumSessions(1)

Пусть вы входите на другой этаж, а возвращаться в это время нужно дважды, то есть на два и.

На сервере Spring Security ведет реестр сеансов. Все вошедшие в систему пользователи будут зарегистрированы в этом реестре. По сути, это коллекция карт. Ключ — это объект пользователя, а значение сохраняет все объекты сеанса пользователя. Карта <Пользователь, Список<Сессия>>.

Когда пользователь выходит из системы, сеанс пользователя будет уничтожен полем, но сеанс на карте не будет удален автоматически, поэтому, когда пользователь выйдет из системы, соответствующий сеанс пользователя в коллекции List будет удален.

Это также очень просто, вам нужно только зарегистрировать Bean в контейнере Spring.

 В этот момент у кого-то возникнет проблема.Выставленная сессия не работает как ни посмотри.Максимальная сессия выставлена ​​на 1,и другие сессии тоже могут логиниться,и они не выходят вместе. почему это?

Вернемся к этой карте, Map<User, List<Session>>, ключом карты является текущий пользовательский объект, а использование объекта в качестве ключа карты вообще требует переписывания методов equals и hashcode, иначе каждый раз Вы входите в систему, Пользовательский объект Они все новые на месте, поэтому есть проблема.

Давайте перепишем метод User

 

 Имя пользователя уже уникально, поэтому я выбираю только имя пользователя здесь, продолжаю переходить к следующему и заканчиваю.

 

 Перезапустите и посмотрите эффект.

Все настройки теперь действуют.

Supongo que te gusta

Origin blog.csdn.net/a2285786446/article/details/131183669
Recomendado
Clasificación