Как очистить всю историю, когда пользователь выходит из системы в ASP.NET? - PullRequest
1 голос
/ 14 февраля 2012

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

Для этих целей на странице login.aspx я использую следующее: -

  if (Request.QueryString["action"] == "logout")
        {

            FormsAuthentication.SignOut();
            Session["CurrentUser"] = null;
            Session["IsJobPoster"] = null;
            Session["AdminEmail"] = null;
            Session["IsAdmin"] = null;
            Response.Buffer = true;
            Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d);
            Response.Expires = -1500;
            Response.CacheControl = "no-cache";


    }

Но пользователь может вернуться на предыдущую страницу после выхода из системы.

Пожалуйста, предложите мне полезную ссылку или пример кода.

Ответы [ 4 ]

1 голос
/ 14 февраля 2012

Кроме того, есть ли причина, по которой вы не используете вместо этого Session.Abandon ()? Вам следует учесть это, особенно если вы получите больше сессионных переменных, их будет проще поддерживать.

0 голосов
/ 15 февраля 2012

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

Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d);
Response.Expires = -1500;
Response.CacheControl = "no-cache";

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

0 голосов
/ 14 февраля 2012

Я предполагаю, что вы видите кэшированную версию страниц на стороне клиента.

Переместите вызовы кэширования (Expires, CacheControl) за пределы оператора if. Вы хотите, чтобы они выполнялись при каждом запросе, чтобы страницы, требующие входа в систему, не кэшировались на стороне клиента. Браузер затем, возвращаясь в историю, сообщит пользователю, что страница недействительна / старая / устарела и нуждается в обновлении. Это инициирует новый запрос, который должен перенаправить пользователя на страницу входа.

0 голосов
/ 14 февраля 2012

Не уверен насчет .Net, но в целом использование POST и истечение срока действия страницы (через соответствующие заголовки ответа) и использование перенаправления HTTP должны стереть историю. Кроме того, если cookie используется для поддержки сеанса, то перезапись cookie некоторым мусором также поможет.

...