我使用以下代码进行自定义“记住我”的修改:
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不会保留)。 解决方案是什么?
答案 0 :(得分:0)
您可以做的是获取客户日期/时间并将其用于Cookie,而不是服务器时间。
有一个很好的答案here向您展示了一个很好的方法来做到这一点;基本上用客户日期/时间填充隐藏字段并在回发时获取它。
您可以在主页上显示此隐藏字段,以便客户日期/时间始终可用。不需要只是登录屏幕。