MSDNは次のように述べています。
LoggedIn イベントは、認証プロバイダーがユーザーの資格情報を確認した後に発生し、認証 Cookie は次の応答でブラウザーに送信するためにキューに入れられます。LoggedIn イベントを使用して、ユーザーが認証された後に、ユーザーごとのデータへのアクセスなどの追加処理を提供します。
したがって、このイベントは Cookie を置き換えるのに適した場所のようです。まず、Cookie を取得して復号化する必要があります。
HttpCookie authCookie = Response.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket oldAuthTicket =
FormsAuthentication.Decrypt(authCookie.Value);
この直後に、抽出したばかりに基づく新しい認証チケットを作成する必要があります。
FormsAuthenticationTicket newAuthTicket = new FormsAuthenticationTicket(
oldAuthTicket.Version,
oldAuthTicket.Name,
DateTime.Now,
DateTime.Now.Add(timeoutForUser),
oldAuthTicket.IsPersistent,
oldAuthTicket.UserData,
FormsAuthentication.FormsCookiePath
);
timeoutForUserこれはTimeSpan、ユーザーのセッション タイムアウトを保持する値です。
最後に、応答の古い Cookie を新しい Cookie に置き換える必要があります。
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
authCookie =
new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
HttpContext.Current.Response.Cookies.Set(authCookie);
これでうまくいくはずです。