フォーム認証をかなりうまく使用していますが、奇妙な問題に遭遇しました。私はウェブを見回しましたが、これまでのところ答えが見つかりませんでした。
私は Javascript を使用して、現在のセッションがタイムアウトから 60 秒離れていることを判断しています。
これは、チケットを更新するために使用しているコードです。チケットの現在の有効期限に 5 分を追加するだけです。しかし、新しい有効期限を出力すると、常に 5 分未満です。通常4分数秒。
コード:
string userID = HttpContext.Current.User.Identity.Name;
HttpCookie cookie = FormsAuthentication.GetAuthCookie(userID, true);
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
DateTime NEW_EXPIRY = DateTime.Now.AddMinutes(FormsAuthentication.Timeout.Minutes);
FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(
ticket.Version,
userID,
DateTime.Now,
NEW_EXPIRY,
ticket.IsPersistent,
ticket.UserData,
ticket.CookiePath);
cookie.Value = FormsAuthentication.Encrypt(newTicket);
if (ticket.IsPersistent) cookie.Expires = newTicket.Expiration;
cookie.Secure = FormsAuthentication.RequireSSL;
HttpContext.Current.Response.Cookies.Add(cookie);
したがって、ここに時差の出力例を示します。
現在のタイムスタンプ = 16/01/2016 14:03:28 チケットの有効期限 = 16/01/2016 14:07:49 (合計秒 = 261.0857244)
有効期限が正確に 14:08:28 にリセットされないのはなぜですか?? ここで壁に頭をぶつけています...