Wie aktualisiere ich einen Anspruch in ASP.NET Identity?

Ich verwende die OWIN-Authentifizierung für mein MVC5-Projekt. Das ist meinSignInAsync

 private async Task SignInAsync(ApplicationUser user, bool isPersistent)
        {
            var AccountNo = "101";
            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
            var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
            identity.AddClaim(new Claim(ClaimTypes.UserData, AccountNo));
            AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent, RedirectUri="Account/Index"}, identity);
        }

Wie Sie sehen, habe ich hinzugefügtAccountNo in die Anspruchsliste.

Wie kann ich diesen Anspruch an einem bestimmten Punkt in meiner Bewerbung aktualisieren? Bisher habe ich folgendes:

 public string AccountNo
        {

            get
            {
                var CP = ClaimsPrincipal.Current.Identities.First();
                var Account= CP.Claims.FirstOrDefault(p => p.Type == ClaimTypes.UserData);
                return Account.Value;
            }
            set
            {
                var CP = ClaimsPrincipal.Current.Identities.First();
                var AccountNo= CP.Claims.FirstOrDefault(p => p.Type == ClaimTypes.UserData).Value;
                CP.RemoveClaim(new Claim(ClaimTypes.UserData,AccountNo));
                CP.AddClaim(new Claim(ClaimTypes.UserData, value));
            }

        }

Wenn ich versuche, den Anspruch zu entfernen, erhalte ich diese Ausnahme:

Der Claim 'http://schemas.microsoft.com/ws/2008/06/identity/claims/userdata: 101 'konnte nicht entfernt werden. Es ist entweder nicht Teil dieser Identität oder es ist ein Anspruch, der dem Auftraggeber gehört, der diese Identität enthält. Beispielsweise besitzt der Principal den Anspruch, wenn er einen GenericPrincipal mit Rollen erstellt. Die Rollen werden über die Identität verfügbar gemacht, die im Konstruktor übergeben wird, aber der Identität nicht gehört. Eine ähnliche Logik gibt es für einen RolePrincipal.

Könnte mir jemand helfen, herauszufinden, wie ich den Claim aktualisiere?

Antworten auf die Frage(11)

Ihre Antwort auf die Frage