浏览器返回按钮问题iasp.net MVC4

时间:2013-03-14 16:25:21

标签: asp.net-mvc-4 browser-cache back-button

我使用以下代码行在使用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页面上重定向,但用户无法更改或添加任何内容。 所以让我知道是否有任何适当的代码或方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果将它放在呈现about.cshtml的控制器方法中,它将按照您的描述工作:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();

不太理想,但会让你走上正轨。基本上,浏览器从登录时缓存about.cshtml。告诉注销方法不缓存响应没有太大作用,因为它执行重定向而不是渲染。