0

我有一个 asp.net mvc4 应用程序,我必须从一个帐户中注销:

 if (_fonction == "User")
            {
                if (_is_admin == true) return RedirectToAction("Index");
                else
                {
                    Session["user"] = _u;
                    return RedirectToAction("Index", "User");
                }
            }

在控制器中User

public ActionResult Index()
        {
            if (Session["user"] == null) return RedirectToAction("Index", "Home");
         return View(Session["user"]);
        }

那个行动Logout

public ActionResult Logout()
        {
            if (_is_admin) { Session["user"] = null; return RedirectToRoute("Administration"); }
            else { Session["user"] = null; return RedirectToAction("Index", "Home"); }
        }

我这样做:我登录到一个用户帐户,然后我断开连接,所以我在主页上,然后我点击back浏览器的按钮,我得到了该帐户的页面。当我刷新时,我回到了主页。我认为问题在于,cache我不认为将其设为 null 是一个好主意。

那么我该如何解决这个问题呢?

4

2 回答 2

2

您可以尝试将[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]属性添加到User控制器的Index操作中以强制执行非缓存结果。

但我强烈建议只使用AuthorizeAttribute,因为这将防止在特定视图上完成未经授权的 Web 请求。使用它的好处是您仍然可以自由地缓存您的视图并同时获得保护。

于 2013-06-18T08:21:02.640 回答
2

如果您不想清理缓存,那么下面是 javascript,它可以帮助您在单击浏览器后退按钮时硬刷新页面

if (window.name != "") { // will be '' if page not prev loaded            
            window.name = ""; // reset to prevent infinite loop
            window.location.reload(true);
        }
window.name = new Date().getTime();

将上面的“javascript”代码放在您的页面上。所以,它会很难刷新你的页面。

于 2013-06-18T08:18:42.683 回答