表单身份验证中的Cookie为null

时间:2014-06-27 06:21:30

标签: c# asp.net-mvc asp.net-mvc-4 authentication

您好我们使用mvc4开发Web应用程序并使用表单身份验证。每件事情都很好,但我们注意到了很短的几天奇怪的行为。即使由于此用户无法登录而在登录页面中正确完成身份验证,global.asax中的cookie也为null。以下是我的代码。

登录页面。

 Userdata = new JavaScriptSerializer().Serialize(userData);
            FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
                       1,
                      UserDetails.UserID,
                       DateTime.Now,
                       DateTime.Now.AddMinutes(90),
                       false,
                       Userdata);            

            string encTicket = FormsAuthentication.Encrypt(authTicket);
            HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
            Response.Cookies.Add(faCookie);              

Global.asax中

protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
        {
            HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
            if (authCookie != null)
            {

                FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

                var s = new System.Web.Script.Serialization.JavaScriptSerializer();
                UserInfoAuth obj = s.Deserialize<UserInfoAuth>(authTicket.UserData);

                UserInformation CurrentUser = new UserInformation(obj.UserId);
                CurrentUser.FirstName = obj.FirstName;
                CurrentUser.LastName = obj.LastName;              
                CurrentUser.ClientIdentity = Convert.ToInt32(obj.ClientIdentity);
                CurrentUser.UserIdentity = Convert.ToInt32(obj.UserIdentity);

                HttpContext.Current.User = CurrentUser;

            }

战斗了两天以上。我们发现它依赖于表单身份验证中的用户数据字符串。

FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(                            1,                           UserDetails.UserID,                            DateTime.Now,                            DateTime.Now.AddMinutes(90),                            假,                            的使用用户数据);

当我在userdata中的用户信息较少时,一切正常。但是当userdata包含关于用户的大量信息时,则在登录时发生auth,但在globl.asax中cookie变为null。真奇怪。请指导我。

在这两个场景中都创建了cookie,我可以在IE11浏览器中看到。

UserData(Less data)包含。 147 charcter - 工作正常。

UserData(大数据)包含。 1045个字符 - 它不起作用。

0 个答案:

没有答案