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");
                                }
                            }
                        }
                    }

                }

これが正しい方法であるか、最適な解決策として何かが利用可能であることを教えてください。

4

1 に答える 1

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...                  
    }
  }

}
于 2012-07-17T10:33:22.227 に答える