0

我用 ASP.NET 开发了网站。现在我做一个认证。

授权由另一个 Web 服务进行。如果来自网络服务的答案是成功的,我会创建一张票:

var ticket = new FormsAuthenticationTicket(1, param.Login, DateTime.Now, DateTime.Now.AddDays(1), false, string.Empty, FormsAuthentication.FormsCookiePath);
            var encTicket = FormsAuthentication.Encrypt(ticket);

            var AuthCookie = new HttpCookie(FormsAuthentication.FormsCookieName)
            {
                Value = encTicket,
                Expires = DateTime.Now.AddDays(1)
            };

            Response.Cookies.Set(AuthCookie);

此代码添加了身份验证 cookie。但是如果我在前面的代码之后添加下一个字符串:

                Response.Redirect("<redirect address>");

重定向后cookie消失。

为什么会这样?

web.config 部分的身份验证在这里:

<authentication mode="Forms">
  <forms name=".ASPXFORMSAUTH" loginUrl="~/login.ashx" />
</authentication>
4

1 回答 1

0

与 cookie 关联的 cookie 数据可能会超出其加密格式的最大允许大小。未加密,数据不会太大。

较大的 cookie 可能会导致 cookie 从响应标头中删除。以下修复值得尝试:

  • 减少 cookie 中设置的数据量
  • 以未加密的格式尝试 cookie 一次。这样,您将被确认确实是 cookie 的大小造成了问题

POST提供了有关 Cookie 大小的良好信息。

于 2013-07-24T14:58:29.603 回答