【发布时间】:2010-01-14 01:26:54
【问题描述】:
我在使用 asp.net 表单身份验证时遇到了一个奇怪的问题。此问题仅发生在已成功登录的 30 多个用户中的 3 个用户中。我使用的是非常基本的身份验证代码,我已经使用了很多次并且从未见过这个问题。在用户成功认证并创建 auth cookie 后,添加 cookie,并调用 response.redirect 到 FormsAuthentication.GetRedirect(userid, false)。 Global.asax 中的 Application_AuthenticateRequest 方法被命中。
// Extract the forms authentication cookie
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Context.Request.Cookies[cookieName];
if (null == authCookie)
{
// There is no authentication cookie.
return;
}
因此,在保存“好”cookie 并发生重定向后,cookie 立即为空。我已经通过调试器运行了代码,并且这 3 个用户的 cookie 仅为空。但是 cookie 看起来与许多成功登录的用户的 cookie 相同。
有什么想法吗?这是应该可以正常工作的标准代码。
【问题讨论】:
-
尝试用 Fiddler 重现问题,看看是否设置了 auth cookie。
-
用户计算机上是否有任何可能阻止创建任何 cookie 的设置?
-
在同一台电脑上,mbalkema可以自己登录成功,但是作为这三个用户之一,cookie没有设置成功。这不是他们计算机的问题,而是 FormsAuthentication 模块中发生的一些奇怪的事情
-
正如 Anthony 所说,这可能是某些用户 PC 的客户端问题。有问题的用户可以在另一台 PC 上登录以比较结果吗?也许让他们尝试 2 种不同的浏览器(IE + FF 等)也可以在那里进行比较。最后暂时将浏览器中与隐私和 cookie 相关的所有安全设置设置为最低设置,看看是否有区别。
-
凯文,感谢您的回复。问题似乎不是浏览器问题。我看到使用有问题的用户登录并通过 IE 和 FF 中的调试器在本地运行网站的结果相同。今天早上,我让用户使用可以登录电脑的人登录……但无济于事。
标签: c# asp.net forms-authentication