FormsAuthentication authCookie仅对某些用户为空

时间:2010-01-14 01:26:54

标签: c# asp.net forms-authentication

我遇到了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立即为空。我已通过调试器运行代码,并且cookie在这3个用户上仅为null。但是cookie看起来与成功登录的许多用户的cookie相同。

有什么想法吗?这是应该正常工作的标准代码。

1 个答案:

答案 0 :(得分:2)

您确定“好”的Cookie已保存并退出响应吗?在FormsAuthentication中可以将一个好的cookie添加到标题中,但响应在其他系统错误(例如w3wp.exe崩溃)的出路上被终止,因此生成一个没有cookie的新响应,并且重定向发生反正。

根据我自己的类似问题的经验,我有一个自定义的Principal类,在认证(和cookie创建)后崩溃,而不是编写适当的cookie,完全从响应中删除了cookie。