18

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 から値を抽出する方法です。

4

1 に答える 1