Я использую JSF 1.2 с Richfaces и Facelets.Как аннулировать сеанс пользователя, когда он дважды регистрируется с теми же учетными данными
У меня есть приложение со многими фасолью с сессией и некоторыми компонентами приложения.
Пользователь регистрируется, скажем, в Firefox. Сессия создается с ID = «A»; Затем он открывает Chrome и регистрируется снова с теми же учетными данными. Сессия создается с идентификатором = «B».
Когда сеанс «B» создан, я хочу, чтобы иметь возможность уничтожить сеанс «A». Как это сделать?
Также. когда пользователь в Firefox что-то делает, я хочу иметь возможность отображать всплывающее окно или какое-то уведомление, в котором говорится: «Вы вышли из системы, потому что вы вошли в систему из другого места».
У меня есть sessionListener, который отслеживает созданные и уничтоженные сеансы. Дело в том, что я могу сохранить объект HTTPSession в компоненте с областью приложения и уничтожить его, когда обнаруживаю, что пользователь дважды зашел в систему. Но что-то говорит мне, что это просто неправильно и не будет работать.
Поддерживает ли JSF сеансы где-то на стороне сервера? Как получить к ним доступ по идентификатору? Если нет, как выбить первый вход пользователя, когда он дважды входит в систему?
Спасибо за ответ. Я предполагаю, что «sessionMap.put (« пользователь », пользователь);» должен быть «sessionMap.put (имя пользователя, пользователь);». В противном случае, если другой пользователь с разными учетными данными войдет в систему, мы вышлем первого пользователя. – pakore
Это не нормально. Вы не хотите, чтобы во время одного клиентского сеанса были разные зарегистрированные пользователи. Также не путайте карту сеанса с картой приложения. – BalusC
Хорошо, теперь я понимаю, что sessionMap является ExternalContext.sessionMap. Он работает :). – pakore