Verwenden von asp.net identity Version 1.0.0-rc1 mit Entity Framework 6.0.0-rc1 (die mit Visual Studio 2013 RC gelieferten).So ändern Sie die Authentifizierungscookies, nachdem Sie Benutzernamen des aktuellen Benutzers mit asp.net identity geändert haben
Versuchen Benutzern die Möglichkeit zu geben, ihre UserName
zu ändern. Es scheint keine Funktion für das unter AuthenticationIdentityManager
, also ändere ich die Daten mit EF (Benutzerobjekt für den aktuellen Benutzer abrufen, Benutzernamen ändern und Änderungen speichern).
Das Problem besteht darin, dass Authentifizierungscookies unverändert bleiben und die nächste Anfrage fehlschlägt, da es keinen solchen Benutzer gibt.
Mit Formularauthentifizierung in der Vergangenheit habe ich den folgenden Code verwendet, um dies zu lösen.
var formsAuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
var isPersistent = FormsAuthentication.Decrypt(formsAuthCookie.Value).IsPersistent;
FormsAuthentication.SetAuthCookie(newUserName, isPersistent);
Was soll ich mit ASP.net-Identität tun, um die Cookies zu aktualisieren?
UPDATE
Der folgende Code scheint das Authentifizierungscookie zu aktualisieren.
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});
Das verbleibende Problem ist: wie Wert aus aktuellen Authentifizierung Cookie extrahieren?
Dieser Code funktioniert möglicherweise für RTM (noch nicht weit verbreitet). In RC1 gibt es keine DefaultAuthenticationTypes und UserManager.CreateIdentityAsync(). – aleyush
Die zweite Frage: Wie kann ich den aktuellen IsPersistent-Wert erhalten (mein Ziel ist es, nur UserName zu ändern, sonst nichts)? – aleyush
Vor der Veröffentlichung von VS2013 ist es gut, Versuche mit dem nächtlichen Build zu halten. Einige der Kommentare hier von Entwicklern gibt an, dass die vielen RC1-Klassen in RTM nicht verfügbar sind, die mit VS2013 im Nov. – jd4u