cookies - ASP.NET FormsAuthentication重定向在重定向和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)



用户处理一点时间来检查第一次登录,安全问题等,然后重定向以下信息:


Session.Add("ForceRedirect","/FirstTimeLogin.aspx")


Response.Redirect("~/FirstTimeLogin.aspx", True)



通过调试中断,我可以验证cookie集合是否保存与我设置的不同用途和 for 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) 



在这一点上,对于这个用户authCookie来说。 我有 15,000个不受这种方式影响的用户。 然而,对于一个用户来说,饼干没有痕迹就消失了。 我曾经在 w3wp.exe 异常。状态服务器异常和其他IIS进程相关异常之前看到过这种情况,但是在事件日志中没有异常。 w3wp.exe 没有崩溃,状态服务器有一些超时,但是它们看起来不相关,而且只有这个用户在这个域中出现。

我正在调查的一条通道可能太大了。 我认为会有一个检查饼干大小的方法,并且我不认为它会影响到这种方式。 请求可能会转储cookie的任何想法?

注意:我提到的辅助cookie也已经转储了( 而且非常微小) 。

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

时间:

事实证明,为这里特定用户转储的cookie数据超出了它的加密格式的最大允许大小。 未加密,数据适合,但一旦加密运行在它上面,大小就变得太大了。 这导致了cookie和任何添加的Cookies 从响应头中删除。

将插入到cookie中的数据量截断解决了问题。

...