Internet Explorer在一次重定向后未保留我的身份验证Cookie。
情况如下:
我有一个在共享的iis7主机上运行的ASP.NET 2.0 Web应用程序。应用程序使用表单身份验证来处理登录和用户身份,并在客户端计算机上为此目的编写cookie(.ASPXFORMSAUTH)。
在IE中(使用版本8,9检查),从某些位置,在第一页之后不会保留身份验证Cookie。观察到的行为是:
这不会发生在Chrome / FF中,即使在IE中,它似乎也取决于我所连接的位置。
同样,在本地(使用VS2008中的内部开发服务器),一切正常,并且在fiddler中反映也很好。
我现在正在敲打它几天。认为它可能是某种奇怪的防火墙问题,但无法确定任何结论。
我们将不胜感激。
答案 0 :(得分:10)
检查您的域中是否包含非字母数字字符,例如test_domain或test-domain等。不幸的是,我不知道是否存在任何修复错误的域名或直接通过IP访问它的问题。你在本地没有问题的原因是你指向http://localhost,这很好。一旦部署到非IE兼容域,您就会看到问题。
发生在我身上,花了几个小时才发现原因。希望这可以帮助。用火杀死IE的另一个原因。
答案 1 :(得分:1)
我的解决方案是其他解决方案的组合:
请注意,真正的最终解决方案是第3个。
最后但并非最不重要:一旦我在上面设置了这个标志,我就不得不在后面的代码中更改logout方法,因为旧的不再注销:
protected void LoginStatusLink_LoggedOut(object sender, EventArgs e) {
// remove the authenticatation cookies from the browser
FormsAuthentication.SignOut();
// force a new 'expired' auth cookie
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName);
cookie.Expires = DateTime.Now.AddMonths(-1);
Response.Cookies.Add(cookie);
// delete roles cookie
Roles.DeleteCookie();
// clear and abandon session
Session.Clear();
Session.Abandon();
// this line just to leave (forget) the current page
this.Response.Redirect("~/");
}
答案 2 :(得分:0)
1.尝试创建持久性cookie
2.检查IEp的cookie设置>
答案 3 :(得分:0)
检查服务器的日期。我有一种情况,服务器落后于浏览器1天,因此身份验证cookie基本上已过期。这影响了IE,但不影响FF。