我使用以下代码行在使用asp.net MVC4.
[OutputCache(NoStore = false, Duration = 0, VaryByParam = "None")]
public ActionResult Logout()
{
try
{
if (Session["username"] != null)
{
Session.Abandon();
Session.Clear();
Session.RemoveAll();
Session["username"] = null;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
return RedirectToAction("Index", "AdminPanel");
}
return RedirectToAction("Error", "Home");
}
catch (Exception e)
{
return RedirectToAction("Error", "Home");
}
}
但是,这个代码存在一个问题,假设我首先有三个页面是登录页面(Index.cshtml)
,第二个成功登录页面(home.cshtml)
,第三个页面是关于页面(about.cshtml)
,现在我登录然后它会在home.cshtml
页面上重定向我现在我移动第三页about.cshtml然后我从about.cshtml
页面注销,它重定向我{{1} }页面。现在,如果我点击浏览器后退按钮,然后再次在login.cshtml
页面上重定向,但用户无法更改或添加任何内容。
所以让我知道是否有任何适当的代码或方法来解决这个问题。
答案 0 :(得分:0)
如果将它放在呈现about.cshtml的控制器方法中,它将按照您的描述工作:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
不太理想,但会让你走上正轨。基本上,浏览器从登录时缓存about.cshtml。告诉注销方法不缓存响应没有太大作用,因为它执行重定向而不是渲染。