Entity Framework 6.0.0-rc1 (Visual Studio 2013 RC に付属するもの) で asp.net ID バージョン 1.0.0-rc1 を使用する。
ユーザーに変更する機会を与えようとしていますUserName
。の下にはそのための機能がないようなAuthenticationIdentityManager
ので、EFを使用してデータを変更します(現在のユーザーのUserオブジェクトを取得し、UserNameを変更して変更を保存します)。
問題は、認証 Cookie が変更されないままであり、そのようなユーザーが存在しないため、次の要求が失敗することです。
過去のフォーム認証では、次のコードを使用してこれを解決しました。
var formsAuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
var isPersistent = FormsAuthentication.Decrypt(formsAuthCookie.Value).IsPersistent;
FormsAuthentication.SetAuthCookie(newUserName, isPersistent);
Cookie を更新するには、asp.net ID をどうすればよいですか?
アップデート
次のコードは、認証 Cookie を更新するようです。
var identity = new ClaimsIdentity(User.Identity);
identity.RemoveClaim(identity.FindFirst(identity.NameClaimType));
identity.AddClaim(new Claim(identity.NameClaimType, newUserName));
AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant
(new ClaimsPrincipal(identity), new AuthenticationProperties {IsPersistent = false});
IsPersistent
残りの問題は、現在の認証 Cookie から値を抽出する方法です。