2013-05-21 65 views
0

我有一个asp.net mvc应用程序。我有一个鉴别形式:所以我使用包含一个静态布尔值,表示用户的connectivty一个静态类:刷新加载重定向注销

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我的帐户页面重新打开(重定向到主页不起作用)
除了我刷新页面。 什么是问题,我如何编码我的代码?

回答

2

“问题”是页面被缓存,用户正在看到缓存页面。它实际上并未向您的网站提出请求。如果你不希望任何网站的缓存,因此他们总是从服务器加载页面,您可以在下面的属性添加到所有的控制器或你的基地控制器,如果你有一个:

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

你失去一切从缓存节省带宽,但如果您的网站内部存在高度敏感的数据,这可能是值得的。

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

+0

好的谢谢,但我可以阻止在浏览器中回来的行动。因为我想如果我连接,我点击回来的页面仍然是一样的,我没有重定向到认证的主页? –

+0

我不确定我完全理解你要做的事情。通过我在上面提到的解决方案,当人员注销并且他们单击后退按钮时,他们将被重定向到您指定为表单身份验证页面的任何页面。这不是你想要发生的事情吗? – Luke