0

我有一个 asp.net mvc 应用程序。我有一个身份验证表单:所以我使用了一个静态类,其中包含一个静态布尔值,指示用户的连接性:

 public static class CompteModels
    {
        private static bool connected = false;

        public static bool Connected
        {
            get { return CompteModels.connected; }
            set { CompteModels.connected = value; }
        }
    }

在控制器中我有这个片段:

 public ActionResult Index()
        {
            if (Upload.Models.CompteModels.Connected)
            {
                return View();
            }

            else return RedirectToAction("Login", "Account");
        }

        public ActionResult Logout()
        {
            Upload.Models.CompteModels.Connected = false;
            return RedirectToAction("Login", "Account");


        }

问题是:当我登录我的帐户时,如果我这样做了,我会注销come back to the previous page我的帐户页面重新打开(重定向到主页不起作用)
,除非我刷新页面。有什么问题,我该如何协调我的代码?

4

1 回答 1

2

“问题”是页面被缓存并且用户正在查看缓存的页面。它实际上并没有向您的网站发出请求。如果您不希望缓存任何站点,以便它们始终从服务器加载页面,则可以将以下属性添加到所有控制器或基本控制器(如果有):

[OutputCache(NoStore = true, Duration = 0)]

您失去了从缓存中节省的所有带宽,但如果您的站点中有高度敏感的数据,这可能是值得的。

我已经看到其他涉及在每个页面加载时发出 ajax 请求的“黑客”,如果由于未经授权而失败,它会重定向到登录屏幕。

于 2013-05-21T15:21:56.157 回答