ASPXAUTH cookie 未保存

Posted

技术标签:

【中文标题】ASPXAUTH cookie 未保存【英文标题】:ASPXAUTH cookie is not being saved 【发布时间】:2010-12-26 09:56:26 【问题描述】:

我正在使用 ASP .NET MVC 2 开发一个 Web 项目。

在这个项目中,我们将一些信息存储在一个加密的 cookie(ASPXAUTH cookie)中,以避免每次请求都查询数据库。

问题是这部分的代码突然停止工作了。

我查看了对源代码控制服务器上的代码所做的更改,是否有任何可能导致它的原因,但我一无所获。我什至恢复到一个已知的工作副本(在其他人的 PC 上工作,相同的代码等),但在调试之后,似乎 .ASPXAUTH cookie 不再被保存。相反,正在设置 ASP.NET_SessionId cookie...(以前没有)

我更改了 web.config 文件以关闭 sessionState。这消除了设置 ASP.NET_SessionId cookie,但它仍然没有保存身份验证 cookie。

我最近安装了一些 Microsoft Windows XP 更新,但其他人(他的 PC 运行该应用程序很好)也安装了。

在谷歌搜索后,我发现一些信息指出了 cookie 的到期日期存在问题。 Ether cus pc 没有正确的时间/日期(情况并非如此)和其他 cus 的 cookie 到期日期设置错误。 (我检查并正确设置)...

除了我使用 IE6 尝试过的(Chrome)之外,其他浏览器仍然存在此问题。

关于为什么会发生这种情况的任何想法?

我会继续发布我能找到的任何有用的信息。

提前致谢。

【问题讨论】:

【参考方案1】:

这可能是您的 cookie 变得太大了。我遇到了同样的问题。 如果你的 cookie 变得太大,它就不会起作用,当然取决于浏览器

MSDN

cookie 通常被限制为 4096 字节,每个站点不能存储超过 20 个 cookie。通过使用带有子键的单个 cookie,您使用的站点分配的这 20 个 cookie 中的更少。此外,单个 cookie 占用大约 50 个字符作为开销(过期信息等),加上您存储在其中的值的长度,所有这些都计入 4096 字节的限制。如果您存储五个子键而不是五个单独的 cookie,则可以节省单独 cookie 的开销,并且可以节省大约 200 个字节。

What is the maximum size of a web browser's cookie's key?

what happens when cookies file exceeds maximum size?

【讨论】:

您成功了,这绝对是尺寸问题。非常感谢。 :]【参考方案2】:

检查 cookie 大小的一种简单方法是调试并运行以下代码

int cookieSize = System.Text.UTF8Encoding.UTF8.GetByteCount(faCookie.Values.ToString());

如果超出限制,那么您将遇到问题。

【讨论】:

【参考方案3】:

在我的工作项目中,我注意到在一定量的头撞到墙上之后,cookie 是使用

设置的
FormsAuthentication.SetAuthCookie(user.token, false);

相比之下,在我不工作的项目中,cookie 是手动设置的:

var coockie = FormsAuthentication.GetAuthCookie(user.token, false);
coockie.Expires = DateTime.Now.AddDays(7);

Response.Cookies.Add(coockie);

在托管服务提供商进行了一些更改后,我的一个共享主机发生了这种情况,我无法通过支持部门了解或发现。本地主机或其他共享主机或 vps 与第一个 approuch 工作得很好

【讨论】:

以上是关于ASPXAUTH cookie 未保存的主要内容,如果未能解决你的问题,请参考以下文章

使用 protection=validation 解密 .ASPXAUTH Cookie

在保护 ASPXAUTH 和 ASP.NET_SessionId cookie 之后,这是正确的行为吗?

Simplemembership ASPXAUTH cookie 在两个单独的 Web 项目上进行验证

Owin cookie身份验证设置cookie未保存在浏览器中

Cookie未保存在浏览器中

为啥浏览器会忽略 set-cookie 标头,并且未使用 fetch 从 Ajax 调用中保存 cookie?