Область применения Struts2 просрочена - PullRequest
1 голос
/ 29 апреля 2011

Мое приложение использует struts2 + spring + hibernate, и я выполнял некоторую систему авторизации сеанса-перехватчика-входа-авторизации и работает нормально, теперь, когда я пытаюсь реализовать часть с истекшим сроком сеанса, у меня возникают проблемы: сначала перехватчик сеансапроверяет каждый запрос, чтобы видеть, находится ли пользователь в сеансе, если нет, то он перенаправляется на страницу входа, в противном случае он пропускает запрошенное действие.

  • , поэтому, если пользователь только что началприложение открывает страницу входа в систему

  • , если время сеанса истекло из-за свойства сеанса timeout в web.xml, а затем перенаправляется на страницу входа

Теперь у меня есть запрос на отображение сообщения об истечении сеанса.Поэтому я решил использовать область приложения и установить некоторые переменные, такие как UserLoggedIn, и теперь вернуться к перехватчику. Я могу проверить, находится ли пользователь в сеансе, и, если его значение NULL, проверить область приложения для переменной UserLoggedIn, поэтому, если он найден, сессия истекла (sessionExpired.jsp) в противном случае login.jsp.проблема заключается в том, что всякий раз, когда я закрываю браузер и снова открываю его, область приложения все еще там и переменная UserLoggedIn с ним, так что, скажем, я хочу запустить браузер и мое приложение, чтобы перехватчик сеанса, который он запустил, не нашел пользователя насеанс GReat !!но он обнаружил переменную UserLoggedIn, которая говорит о том, что это не новое начало, поэтому всплывающее сообщение сеанса истекло.Я знаю, что это немного сбивает с толку. Я не уверен, что это правильный способ сделать этот сеанс истекшим;Это моя первая попытка.

Буду очень признателен за любые советы, альтернативные методы и т. д.

pd: я знаю, что существуют более эффективные подходы к защите вашего приложения, такие как весенняя защита, которую я посвятил 2 дня, ноне удалось, и из-за временного фактора я не могу продолжать пытаться это сделать

1 Ответ

1 голос
/ 29 апреля 2011

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

...