我遇到了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相同。
有什么想法吗?这是应该正常工作的标准代码。
答案 0 :(得分:2)
您确定“好”的Cookie已保存并退出响应吗?在FormsAuthentication中可以将一个好的cookie添加到标题中,但响应在其他系统错误(例如w3wp.exe崩溃)的出路上被终止,因此生成一个没有cookie的新响应,并且重定向发生反正。
根据我自己的类似问题的经验,我有一个自定义的Principal类,在认证(和cookie创建)后崩溃,而不是编写适当的cookie,完全从响应中删除了cookie。