Я прочитал множество сообщений, в которых у людей были похожие проблемы, но они не нашли рабочего решения. У меня есть сайт MVC 4, я не хочу удалять кеширование со всего сайта, так как я хочу кешировать страницы. Когда пользователь нажимает кнопку выхода, он успешно выходит из системы и перенаправляется на страницу входа, однако, когда пользователь нажимает кнопку «Назад», отображается ранее просмотренная «закрытая страница», которую вы должны увидеть только после входа в систему. Я понимаю, что это потому, что браузер кэшировал страницу на стороне клиента. Я пробовал несколько решений, и, как упоминалось ранее, ни одно из них не работает. В настоящее время мой выход из системы имеет следующий код:
public ActionResult LogOff()
{
FormsAuthentication.SignOut();
Session.Abandon();
Session.Clear();
// clear authentication cookie
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie1);
// clear session cookie (not necessary for your current problem but i would recommend you do it anyway)
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie2);
// Invalidate the Cache on the Client Side
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");
// send an expired cookie back to the browser
var ticketExpiration = DateTime.Now.AddDays(-7);
var ticket = new FormsAuthenticationTicket(
1,
// replace with username if this is the wrong cookie name
FormsAuthentication.FormsCookieName,
DateTime.Now,
ticketExpiration,
false,
String.Empty);
var cookie = new System.Web.HttpCookie("user")
{
Expires = ticketExpiration,
Value = FormsAuthentication.Encrypt(ticket),
HttpOnly = true
};
Response.Cookies.Add(cookie);
return RedirectToAction("Login", "Account");
}