我在登录页面上有以下代码。我正在使用它来设置客户的登录超时。在IE8中,我遇到了如果用户打开另一个浏览器窗口,然后在第一个窗口中注销,当他们重新登录后,他们会在单页(每次)后弹回登录。如果他们不打开另一个浏览器,一切都很好。当打开多个浏览器时,IE8和ASP.Net Forms身份验证Cookie失败
我发现很多关于这个的问题,但我发现唯一的解决方案是使用无Cookie方法(URI)。
我见过一些文章说要设置域,我正在做的,但那不行。另外,我试着将authticket设置为永久和非永久。两者都没有改变。我已经看到,一旦auth cookie从文件夹中消失,它不会重新创建时,我登录。
如果我打开第二个浏览器窗口作为“新建会话”,我没有任何问题。 (这是不实际的,因为我们无法训练应用程序的每个用户以这种方式打开任何额外的窗口。)
是否有这样的修复,任何人都发现,不涉及使用无cookie的URI方法?
int timeoutValue = 20 // This value is actually returned from a method;
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(LoginControl.UserName, false, timeoutValue);
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
authCookie.Domain = "my.domain";
authCookie.Expires = DateTime.Now.AddMinutes(timeoutValue);
HttpContext.Current.Response.Cookies.Add(authCookie);
澄清:用户从应用程序打开一个新的浏览器窗口?即右键单击>在新窗口中打开链接,实质上将会话延伸到新窗口? – 2010-02-11 14:34:18
是的,但他们如何打开第二个窗口并不重要。如果他们从桌面快捷方式,新选项卡启动新浏览器,请右键单击。不会导致问题的唯一方法是“文件...新建会话” – Mikejh99 2010-02-11 16:03:04
其实,让我重申一下。如果我从桌面上的快捷方式启动orignal浏览器,我没有问题。我认为这与IE正在启动的方式有关,例如-nomerge或类似的东西。 – Mikejh99 2010-02-11 17:13:07