Я сохраняю переменную сеанса, когда пользователь вошел в систему. Таким образом, когда пользователь нажимает на btnLogout, он должен очистить все мои сеансы и "Запустить пользователя" для "ХОРОШЕГО".
Он очищает мои сеансы, но если я нажму кнопку BACK в IE сразу после выхода из системы, я все равно войду! Это означает, что он возвращается на экран, где пользователь все еще регистрировался.
Мой код при выходе из системы
protected void btnLogout_Click
{
Session.Clear();
Session.Abandon();
Session.RemoveAll();
Response.Redirect("Home.aspx");
}
Почему это и как я могу предотвратить это?
EDIT: Может быть, есть возможность в коде, который я могу сделать, который отключит пользователя от нажатия кнопки BACK в веб-браузере?
Вы можете поместить это в 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));
Это, например, то, что делают большинство банковских сайтов, поэтому вы не можете эффективно использовать кнопку "Назад".
Это действительно проблема? Да, они могли видеть свою предыдущую страницу по мере ее кэширования, но как только они попытаются сделать какие-либо другие законные запросы в этом контексте, они не сработают, поскольку ваши переменные сеанса исчезли.
Если у вас есть какая-то очень конкретная причина для кодирования вокруг этого, вы бы решили проблему, которая на самом деле не существует.
Существует несколько способов заставить браузер не кэшировать страницу ни с кода, ни с javascript, ни с помощью HTML, используя следующее на странице
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
Также было бы хорошей практикой добавить в ваше событие page_load код кода для некоторого кода, чтобы убедиться, что переменная сеанса по-прежнему существует.
В браузере хранится кеш страницы, поэтому простое нажатие на него не сделает запрос на сервер, чтобы узнать, все ли вы вошли в систему. Вам нужно будет использовать HTTPS, чтобы обеспечить защиту кеша.