相关疑难解决方法(0)

ASP.Net FormsAuthentication Redirect丢失Redirect和Application_AuthenticateRequest之间的cookie

我有一个FormsAuthentication cookie,它是永久性的,并且可以在开发,测试和生产环境中独立工作。我有一个可以进行身份​​验证的用户,创建了用户对象,并将身份验证Cookie添加到了响应中:

'Custom object to grab the TLD from the url
authCookie.Domain = myTicketModule.GetTopLevelDomain(Request.ServerVariables("HTTP_HOST"))
FormsAuthentication.SetAuthCookie(authTicket.Name, False)
Response.SetCookie(authCookie)
Run Code Online (Sandbox Code Playgroud)

对用户进行一点点处理以检查第一次登录,安全性问题等,然后使用以下提示重定向用户:

Session.Add("ForceRedirect", "/FirstTimeLogin.aspx")
Response.Redirect("~/FirstTimeLogin.aspx", True)
Run Code Online (Sandbox Code Playgroud)

通过调试中断,我可以验证cookie集合是否既包含与我出于不同目的设置的身份验证无关的cookie,也包含表单身份验证cookie。然后,该过程的下一步发生在global.asax中的ApplicationAuthenticateRequest处:

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim formsCookieName As String = myConfigurationManager.AppSettings("FormsCookieName")
    Dim authCookie As HttpCookie = Request.Cookies(formsCookieName) 
Run Code Online (Sandbox Code Playgroud)

在这一点上,对于这个一个用户authCookie来说还算是什么。我还有15,000个其他用户没有受到这种方式的影响。但是,对于一个用户而言,cookie只是消失了而没有任何痕迹。我以前已经通过w3wp.exe异常,状态服务器异常和其他与IIS进程相关的异常看到了这一点,但是事件日志中没有任何异常。w3wp.exe不会崩溃,状态服务器有一些超时,但它们似乎不相关(已通过时间戳验证),并且仅在该一个域中的该用户身上发生(此代码在2个不同的TLD中使用,大约有10个其他子域) 。

我正在调查的一条途径是cookie可能太大了。我认为应该检查进入响应的cookie的大小,并且我认为它不会以这种方式对其产生影响。关于请求为何可能转储cookie的任何想法?

注意:我提到的我设置的辅助cookie也将被转储(非常小)。

编辑注释:发生这种情况时,会话令牌不会丢失。但是,由于身份验证cookie丢失,因此它将被忽略并在后续登录时被替换。

asp.net cookies redirect iis-6 forms-authentication

3
推荐指数
1
解决办法
7106
查看次数

标签 统计

asp.net ×1

cookies ×1

forms-authentication ×1

iis-6 ×1

redirect ×1