2012-07-17 227 views
1

當會話超時時,這是將用戶註銷的正確方式嗎? 這是我在主頁的Page_init中編寫的代碼。 而且,
會話狀態和窗體身份驗證是喜歡,當會話超時時註銷用戶

<sessionState mode="InProc" timeout="1" cookieless="false"> 
    </sessionState> 

     <authentication mode="Forms"> 
      <forms loginUrl="Default.aspx" timeout="2880"/> 
     </authentication> 


    if (userToLogin != null) 
       { 
        if (Context.Session != null) 
        { 
         if (Session.IsNewSession) 
         { 
          HttpCookie newSessionIdCookie = Request.Cookies["ASP.NET_SessionId"]; 
          if (newSessionIdCookie != null) 
          { 
           string newSessionIdCookieValue = newSessionIdCookie.Value; 

           if (newSessionIdCookieValue != string.Empty) 
           { 
            **System.Web.Security.FormsAuthentication.SignOut();**         
            Response.Redirect("SessionTimeOutPage.htm"); 
           } 
          } 
         } 
        } 

       } 

請建議我來說這是正確的方式或東西是可以作爲最佳的解決方案。

+0

對不起,也許需要更多的測試。我用這一點來做這樣的測試。 – Aristos 2012-07-17 10:38:35

回答

1

把你的代碼的Global.asax.cs

protected void Session_End(Object sender, EventArgs e) 
{    

    HttpCookie authenticationCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; 
    if (authenticationCookie != null) 
    { 
    FormsAuthenticationTicket authenticationTicket = FormsAuthentication.Decrypt(authenticationCookie.Value); 
    if (!authenticationTicket.Expired) 
    { 
     // log-out the user...     
    } 
    } 

} 
+0

這將工作,但我想在會話超時後重定向到另一個頁面。和Session_End給出的錯誤response.redirect() – 2012-07-17 10:47:19

+0

你不能在這個處理程序中做到這一點..首先沒有要求重定向。你可以寫一些解決方法,雖然..(http://www.codeproject.com/Articles/15575/Detecting-Session-Timeout-and-Redirect-to-HomePage)就是一個例子。 – 2012-07-17 10:59:30