У нас есть требование ограничить одновременный вход в систему одного и того же пользователя в двух веб-приложениях.
Например, у нас есть 2 веб-приложения: WebApp1, WebApp2.
Пользователь: Панель управления
Если пользователь Dashboard вошел в WebApp1, то тому же пользователю не разрешено входить в WebApp2, вместо этого отображается сообщение об ошибке при втором входе.
Пробное решение:
Заблокировать второй вход с тем же идентификатором пользователя, если есть активный сеанс, и показать пользователю сообщение об ошибке.
Идея состоит в том, чтобы сохранить идентификатор пользователя, имя приложения и идентификатор сеанса в БД. При втором входе в систему того же пользователя проверьте, существует ли запись в таблице БД для идентификатора пользователя, затем заблокируйте второй вход и покажите пользователю сообщение об ошибке.
Очистите запись БД (идентификатор пользователя, идентификатор сеанса и имя приложения) в следующих сценариях:
- Выйти
- Время ожидания сеанса
- Перезапуск приложения.
Не уверен, как обрабатывать следующие сценарии.
- Закройте браузер.
- Сбой браузера
- Системный сбой
Если второй запрос на вход исходит от действительного пользователя, то администратор должен сделать недействительным сеанс первого входа, поскольку этот пользователь является злоумышленником.
как лучше всего аннулировать Http-сессию WebApp2/WebApp1?