Классический процесс выхода из ASP - PullRequest
1 голос
/ 21 января 2011

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

  1. Session.Abandon ()
  2. Перенаправление на Index.asp, где пользователи могут снова войти в систему.

После выхода из системы пользователи возвращаются в index.asp.Но если пользователи нажимают кнопку «Назад» в браузере, они переходят на предыдущую страницу.Я не хочу, чтобы это случилось.Мне нужно сообщение о том, что они уже вышли из системы. Я реализовал следующие шаги

1.Добавьте Response.Expires=-1 и Response.CacheControl="no-cache" вверху каждой страницы.2. На каждой странице я проверяю объект сеанса, чтобы увидеть, что он не пустой.Если пусто, я создаю сообщение о том, что они уже вышли из системы и должны войти снова.

Теперь, когда пользователи нажимают кнопку «Назад» после выхода из системы, вместо того, чтобы показывать сообщение о выходе из системы, я получаю сообщение «Web page expired» в IE8.Я вижу такое же поведение, когда пользователи нажимают кнопку «Назад» на некоторой странице при входе в систему.

Любые идеи, как мне лучше это реализовать.

Спасибо.

Ответы [ 2 ]

1 голос
/ 21 января 2011

Существуют дополнительные объявления без кэширования, которые иногда помогают:

Response.Expires = 0
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"

Я читал некоторое время назад (отсюда и невозможность найти ссылку), что установка expires на -1 может привести к тому, что какой-то браузер проигнорирует его, а не сразу истечет.

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

Что касается вашего сообщения об истечении срока действия веб-страницы, это (как уже упоминалось) результат того, что браузер пытается помешать вам повторно отправить данные POST (и, возможно, дублировать то, что вы делали в последний раз). Лучший способ обойти это и решить ряд других распространенных проблем с пользовательским интерфейсом в формах - это POST вернуться на ту же страницу, а затем, если / когда действие завершено, с использованием response.redirect на той же странице, возможно, с URL закодированное сообщение, чтобы сказать «все сделано успешно». Это позволяет пользователям обновляться и помогает с проблемой кнопки «Назад», поскольку большинство браузеров теперь не сохраняют правильно перенаправленные страницы в своей истории.

1 голос
/ 21 января 2011

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

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