2013-05-21 107 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