0

我在登录页面中使用此代码。这是工作正常。

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
               1, // Ticket version
               eUserName.Text,
               DateTime.Now, 
               DateTime.Now.AddMinutes(30),
               true,
               "administrator",
               FormsAuthentication.FormsCookiePath);


        string hash = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(
           FormsAuthentication.FormsCookieName,
           hash);

        // Set the cookie's expiration time to the tickets expiration time
        if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;

        // Add the cookie to the list for outgoing response
        Response.Cookies.Add(cookie);
        Response.Redirect("Default.aspx");

但是当我使用 FormsAuthentication.SignOut 或 asp:LoginStatus 控件注销时,这是不注销。这似乎已登录。当我在 Internet Explorer 8 上进行测试时,成功注销。

火狐怎么了?我该如何解决这个问题?

谢谢

埃巴图尔加

4

1 回答 1

3

FireFox 和 FormsAuthentication 的问题在于 FireFox 似乎没有删除 SignOut 上的 auth cookie。您可以尝试 3 件事:

1) 调用 SignOut 方法后,像这样清除 cookie => Response.cookies.clear()
2)Session.abandon在 SignOut 调用之前尝试调用
3) 您还可以尝试以下操作:Response.Expires = 0, Response.Cache.SetNoStore(), Response.AppendHeader("Pragma", "no-cache")

希望那些帮助!

于 2009-08-03T04:29:43.277 回答