2009-07-29 5 views
4

У меня есть классический веб-сайт asp, который использует переменные сеанса для хранения состояния входа, т.е. userid, isloggedin и т. д. При выходе из системы переменные сеанса сбрасываются и вызывается Session.Abandon(), а затем перенаправляется на страницу входа. В IE7 я заметил, что после выхода из системы я могу ввести ранее посещаемый URL-адрес и посмотреть, что похоже на кешированную версию его состояния до выхода из системы. Нажатие ctl-f5 снова перезагрузится с сервера и перенаправится на страницу входа. Это поведение, которое я хочу выполнить, даже если URL-адрес вводится без ctl-f5. Кто-нибудь знает, как получить такое поведение?IE7 Classic ASP Cache

ответ

1

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

Вы можете попробовать либо перезагрузку SESSIONID. = "" или sessionID = "XYZ" и сделать XYZ тем, что ваш код игнорирует при выходе из системы.

Вы также можете попробовать установить заголовки no-cache.

0

Вы можете отправить no-cache, тем не менее, это тихий удар производительности, чтобы получить то, что вы хотите. Я предпочитаю предложение Liams и гарантирую, что все, что вы делаете с этой страницы, требует, чтобы вы вошли в систему, поэтому никто не может делать ничего, что им не нужно. Что, если его система электронной почты хоть и похожа, люди «могут» просматривать электронные письма других людей, которые кэшируются, в этих случаях да, а не кэширование конфиденциальной информации - это путь (вы не можете кэшировать HTTPS-страницы по умолчанию, например).

Вы также можете включить javascript в голову, который может проверить наличие «зарегистрированного» файла cookie. Это будет запускаться каждый раз, когда они загружают страницу, если cookie не существует, тогда JS может перенаправить вас на страницу входа. Не 100% доказательство дурака, но достаточно хорошее. На странице выхода из системы вы должны очистить этот файл cookie, и страница входа в систему настроена на него.

2

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

Если вы хотите использовать какое-то кеширование, а ваша страница не является постоянным обновлением, хорошим компромиссом является то, что заголовок Response.Expires подходит к некоторому значению, которое вы считаете подходящим (это измеряется в считанные минуты).