繁体   English   中英

将操作修复回asp.net mvc应用程序中的帐户页面

[英]Fixing the action back to an account page in asp.net mvc application

我有一个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是个好主意。

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

如果您不想清理缓存,则下面的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”代码放在您的页面上。 因此,它将很难刷新您的页面。

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

但我强烈建议仅使用AuthorizeAttribute因为这将防止在特定视图上执行未经授权的Web请求。 使用此方法的好处是,您仍然可以让用户自由缓存视图并同时得到保护。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM