Cookie到期日期时间和客户端和服务器中的不同日期

时间:2013-01-01 20:58:45

标签: c# asp.net

我使用以下代码进行自定义“记住我”的修改:

        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, member.UserName, DateTime.Now, DateTime.Now.AddHours(24), true, dataString);
        string encTicket = FormsAuthentication.Encrypt(ticket);
        HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
        faCookie.Expires = ticket.Expiration;
        HttpContext.Current.Response.Cookies.Add(faCookie);

但有些用户无法登录(登录后即显示登录页面) 似乎问题是由客户端具有与服务器不同(更大)的日期引起的。 那么,“记住我”实施的最佳和正确的解决方案是什么 要解决这个问题,我必须删除这一行:

faCookie.Expires = ticket.Expiration;

删除此行后,当用户关闭浏览器时,他必须登录(cookie不会保留)。 解决方案是什么?

1 个答案:

答案 0 :(得分:0)

您可以做的是获取客户日期/时间并将其用于Cookie,而不是服务器时间。

有一个很好的答案here向您展示了一个很好的方法来做到这一点;基本上用客户日期/时间填充隐藏字段并在回发时获取它。

您可以在主页上显示此隐藏字段,以便客户日期/时间始终可用。不需要只是登录屏幕。

相关问题