Проблема с моими переменными Session в asp.net 2.0

2

Я сохраняю переменную сеанса, когда пользователь вошел в систему. Таким образом, когда пользователь нажимает на btnLogout, он должен очистить все мои сеансы и "Запустить пользователя" для "ХОРОШЕГО".

Он очищает мои сеансы, но если я нажму кнопку BACK в IE сразу после выхода из системы, я все равно войду! Это означает, что он возвращается на экран, где пользователь все еще регистрировался.

Мой код при выходе из системы

protected void btnLogout_Click
{
   Session.Clear();
   Session.Abandon();
   Session.RemoveAll();

   Response.Redirect("Home.aspx");
}

Почему это и как я могу предотвратить это?

EDIT: Может быть, есть возможность в коде, который я могу сделать, который отключит пользователя от нажатия кнопки BACK в веб-браузере?

  • 0
    Возможно, не связано: было бы лучше добавить второй аргумент, установленный в true для Redirect, чтобы завершить выполнение страницы после перенаправления. Возможно, есть переменные сеанса, используемые в любых методах, выполняемых после перенаправления, но не заканчивающего выполнение страницы?
  • 0
    Что мне нужно сделать в коде для этого?
Теги:
session
back-button

4 ответа

4
Лучший ответ

Вы можете поместить это в Page_Init своего Учителя:

Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900, 01, 01, 00, 00, 00, 00));

Это, например, то, что делают большинство банковских сайтов, поэтому вы не можете эффективно использовать кнопку "Назад".

  • 0
    Огромное спасибо!!!!!
3

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

Если у вас есть какая-то очень конкретная причина для кодирования вокруг этого, вы бы решили проблему, которая на самом деле не существует.

2

Существует несколько способов заставить браузер не кэшировать страницу ни с кода, ни с javascript, ни с помощью HTML, используя следующее на странице

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

Также было бы хорошей практикой добавить в ваше событие page_load код кода для некоторого кода, чтобы убедиться, что переменная сеанса по-прежнему существует.

  • 0
    Спасибо, но где я должен разместить это при использовании MasterPages? Внутри моей MasterPage?
  • 1
    создайте страницу требовать регистрации и унаследуйте от нее все необходимые для входа страницы. Или просто добавьте его в MasterPage, если все дочерние страницы требуют этой функции.
1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню