2011-10-07 100 views
0

我有以下注銷代碼。當它註銷時,但當按下後,它不應該去以前訪問的頁面,但它確實。註銷C#不工作

//當登錄

if (txtPassword.Text == password) 
       { 
        Session["Login"] = true; 
        Response.Redirect("AdminControlPanel.aspx"); 
       } 

//當註銷

Session["Login"] = false; 
      Session.Abandon(); 
      FormsAuthentication.SignOut(); 
      Response.Cache.SetCacheability(HttpCacheability.NoCache); 
      Response.Cache.SetAllowResponseInBrowserHistory(false); 
      Response.Redirect("~/index.aspx"); 

//上adminpanel.aspx

if (!this.Page.IsPostBack) 
      { 
       if (this.Session["Login"]==null || (bool)this.Session["Login"]==false) 
       { 
        base.Response.Redirect("~/index.aspx"); 
       } 
      } 

檢查有什麼不對呢?

+0

穿上它斷點,並檢查會話[「登錄」]的價值。 –

+0

可能重複? http://stackoverflow.com/questions/2686946/asp-net-authentication-login-and-logout-with-browser-back-button –

+0

你無法控制瀏覽器,所有代理之間的等等遠處理用戶按「後退」。這可能是爲什麼如此多的註銷頁面要求用戶關閉瀏覽器窗口。只要數據曾經在瀏覽器中查看過,它可能在一個或多個高速緩存中並且可以復活,緩存控制可能會或可能不會被鏈中的任何中間人正確承認。 –

回答

3

嘗試設置Cache-Control

Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetAllowResponseInBrowserHistory(false); 
0

可能有可能是問題,當你分配值到session變量

把一個破發點中if (txtPassword.Text == password)和檢查 會發生什麼。

if (!this.Page.IsPostBack) 
      {    
      if (!string.IsNullOrEmpty((string) Session["Login"])) 
      { 
        var result = Convert.ToBoolean(Session["Login"]); //put a break point there also and check what values it getting 
       } 


      } 
+0

它不能與「」 – Heena

+0

你可以把你的代碼分配給會話的值 –

+0

更新了問題 – Heena