Cookie无法在移动浏览器上运行(使用ASP.NET MVC)

时间:2015-09-09 19:36:10

标签: android asp.net-mvc cookies

我有一个ASP.NET C#MVC4网站,我在很大程度上工作得非常好。但是,当我们在移动设备上测试时,我用于身份验证的cookie将无法正常工作。我在我的控制器操作中设置了Auth cookie,但是在下次调用时尝试访问它们时它们不存在。再一次,这只是一个移动问题。适用于IE,Chrome和Firefox的桌面版本。不适用于Android上的Chrome。

编写cookie的代码(在控制器操作中):

    //Set information into object that can be read out of the cookie later
    FormsAuthModel UserDataObj = new FormsAuthModel
    {
        UserID = dmUser.ID,
        PasswordChange = dmUser.PasswordChange
    };
    string UserData = Convert.ToBase64String(clsShared.Serialize(UserDataObj));

    //Create the ticket
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, dmUser.UserName, DateTime.Now, DateTime.Now.AddDays(1), false, UserData, FormsAuthentication.FormsCookiePath);

    // Encrypt the ticket
    string encTicket = FormsAuthentication.Encrypt(ticket);

    // Create the cookie
    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
    System.Web.HttpContext.Current.Response.Cookies.Add(cookie);

读取cookie的代码(在Global.asax.cs中 - Application_PostAuthenticateRequest):

    HttpCookie authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
    if (authCookie != null)
    {
        try
        {
            FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
            UserDataObj = (FormsAuthModel)clsShared.Deserialize(Convert.FromBase64String(authTicket.UserData), typeof(FormsAuthModel));
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            //WriteEvent(string.Format("Error deserializing auth ticket - {0}", ex.Message), EventLogEntryType.Error);
        }
    }

AuthCookie在后续请求中始终为null。用户看到的是登录屏幕,他们将其填满,然后将其重定向到登录屏幕。

我在搜索中找不到任何有助于解释为什么所有移动请求(我的手机,平板电脑和其他用户及手机)与桌面浏览器的行为不同的原因。

非常感谢任何帮助。

谢谢!

0 个答案:

没有答案