Как поступить с пользователями, которые нажимают кнопку «Назад» после выхода - PullRequest
4 голосов
/ 20 декабря 2011

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

<c:if test="${someCondition}">
addMsgToButtonEvent();
</c:if>

Работает (почти) идеально. Но теперь, когда пользователь вошел в систему и:

  1. нажмите кнопку «Выйти» (которая находится в моем заголовке и перенаправляет на другую страницу)
  2. нажмите кнопку «Назад» в браузере

Сообщение не появляется, потому что моя страница не отображается снова, addMsgToButtonEvent не вызывается. Я знаю, что могу заблокировать кнопку «назад», очистив историю, но это слишком сильно изменит бизнес-требования. Это какой-то мягкий и эффективный способ решения этой проблемы?


Отредактировано:

Я думаю, что лучший подход к такой проблеме - аннулирование сессии после выхода. Я сделал это таким образом.

Ответы [ 2 ]

3 голосов
/ 20 декабря 2011

У меня были похожие проблемы с сайтами ASP.Net и элементами управления входом.

Вы можете добавить метатег в HTML, чтобы браузер не кэшировал его - следовательно, кнопка «Назад» приведет к корректной перезагрузке страницы с сервера:

<meta http-equiv="CACHE-CONTROL" content="NO-CACHE">
<meta http-equiv="EXPIRES" content="0">

Надеюсь, что это может помочь:)

0 голосов
/ 20 декабря 2011

Если проблема с кэшированием, добавьте следующие строки в начало вашей JSP

<%
response.setHeader("Cache-Control","no-cache no-store"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>

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

Лучший подход:

При создании сеанса присваивают именованный атрибут Для того чтобы напечатать выписку, проверьте наличие указанного атрибута. Если названный атрибут найден ... выведите сообщение, иначе не делайте этого При выходе ... сделать session.invalid ()

Дайте мне знать, что сработало ... и мы можем углубиться в это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...