Firefox关闭后不会删除ASP.NET身份验证cookie

Ton*_*ony 5 c# asp.net authentication cookies firefox

我正在开发一个小型Web应用程序,用于共享计算机.

当用户关闭浏览器窗口时,我希望删除会话和身份验证.

在登录页面中,我使用类似的东西来验证用户:

FormsAuthenticationTicket authTicket =
      new FormsAuthenticationTicket(1,txtUser.Text,
                                    DateTime.Now,
                                    DateTime.Now.AddMinutes(5),
                                    false,"");

string encTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
HttpContext.Current.Response.Cookies.Add(faCookie);
string redirectUrl = FormsAuthentication.GetRedirectUrl(txtUser.Text, false);
HttpContext.Current.Response.Redirect(redirectUrl);
Run Code Online (Sandbox Code Playgroud)

如您所见,我已将"isPersistent"变量设置为false.

这似乎适用于Chrome(尚未在IE上测试),但是,当我在Firefox上运行应用程序时,激活了多个选项卡,如果我关闭浏览器并再次打开,我仍然经过身份验证,并且cookie仍然存在!

它真的很奇怪,因为关闭时应删除cookie ...当你打开多个标签时,这是Firefox的错误吗?我怎样才能解决这个问题?

非常感谢帮助!

提前致谢

Ton*_*ony 2

感谢大家的提示,但我确信我会关闭浏览器,不会再打开任何与 Firefox 相关的窗口。

通过阅读本文,这似乎是 Firefox 3 设计者选择的默认浏览器行为......

似乎它在磁盘上存储了本应存储在 RAM 上的 cookie,以便在您再次打开浏览器时恢复选项卡。所以如果你想删除session,你需要关闭所有标签,然后浏览器...

我认为这可能会导致一些有关身份验证安全性的缺陷,例如,有人正在使用该应用程序,完成工作并通过关闭浏览器而不是选项卡离开。由于计算机是共享的,在另一个用户打开浏览器后,他将看到所有选项卡,并恢复之前的会话......

  • 10 年后,这似乎仍然是一个问题,如果我至少打开一个私人选项卡,cookie 就不会被删除,我不明白他们为什么这样设计。 (2认同)