Проблема с моими переменными Session в asp.net 2.0 - PullRequest
2 голосов
/ 07 мая 2009

Я сохраняю переменную Session, когда пользователь вошел в систему. Таким образом, когда пользователь нажимает на btnLogout, он должен очистить все мои сеансы и выйти из системы для пользователя GOOD !!!

Это очищает мои сеансы, но если я нажимаю кнопку НАЗАД в IE сразу после выхода из системы, то я все еще вхожу в систему! Это означает, что он возвращается к экрану, на котором пользователь все еще вошел в систему.

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

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

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

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

EDIT: Возможно, в коде есть опция, которая не позволяет пользователю нажимать кнопку НАЗАД в веб-браузере?

Ответы [ 4 ]

4 голосов
/ 08 мая 2009

Вы можете поместить это в 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));

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

3 голосов
/ 07 мая 2009

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

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

2 голосов
/ 07 мая 2009

Существует несколько способов, с помощью которых вы можете указать браузеру не кэшировать страницу с помощью code-behind, javascript или HTML.

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

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

1 голос
/ 07 мая 2009

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

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