カスタムの「rememberme」の実装に次のコードを使用しています。
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は保持されません)。解決策は何ですか?