Как отключить кэш в asp.net ?

#asp.net

#asp.net

Вопрос:

Я работаю над сайтом электронной коммерции, используя VB.NET . Пользователь входит в систему, чтобы купить некоторые продукты, и они могут видеть детали заказа. Как только они вошли в систему, создается сеанс для идентификатора пользователя и завершается выход, все сеансы прекращаются.

Я вошел на сайт, скопировал одну из ссылок (например, детали заказа) и вышел из системы. Когда я запускаю ссылку, страница все еще отображается, даже если сеанс прекращен.

Если я обновлю страницу, страница вернется на страницу входа.

Это затрагивает некоторые функции браузера. Я тестировал IE, даже ту же версию IE 8, некоторые из них обналичили страницу, o.

Как я могу отключить кэшированную страницу?

Комментарии:

1. См . forums.asp.net/t/1268449.aspx/1

Ответ №1:

В дополнение к завершению сеанса при выходе из системы вы также сообщаете .СЕТЕВАЯ аутентификация завершается? Например, при использовании проверки подлинности forms вам необходимо выполнить проверку подлинности FormsAuthentication.Выход из системы();

Комментарии:

1. То есть я не думаю, что кэширование — это ваша проблема. Я думаю, проблема в том, что сеанс пользователя завершился, но их токен аутентификации все еще существует, поэтому им разрешен доступ к странице. Как только страница пытается обновить и использовать объект сеанса, она не находит сеанса, поэтому перенаправляется на страницу входа.

Ответ №2:

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

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

Комментарии:

1. Спасибо, даже я обновил код, который отключил кэширование, он все равно не работает. Я думаю, что браузер просто игнорирует это. Это та же версия IE 8 и реагирует по-разному.

Ответ №3:

Попробуйте что-то вроде этого:

 Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 
  

Я думаю, вы тоже можете сделать это таким образом:

 <meta http-equiv="Expires" CONTENT="0"> 
<meta http-equiv="Cache-Control" CONTENT="no-cache"> 
<meta http-equiv="Pragma" CONTENT="no-cache"> 
  

Редактировать

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