Response.Redirect操作后,FormsAuthenticationTicket消失了

时间:2013-07-24 06:18:09

标签: asp.net authentication cookies formsauthenticationticket

我用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>

1 个答案:

答案 0 :(得分:0)

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

cookie的大小可能导致cookie从响应头中丢失。以下修复值得尝试:

  • 减少Cookie中设置的数据量
  • 以非加密格式尝试使用一次Cookie。通过这种方式,您将确认确实是创建问题的Cookie的大小

这个POST提供了有关Cookie大小的详细信息。