Hinzufügen von Ansprüchen in ASP.NET Identity

Ich versuche, ein Dokument oder ein Beispiel dafür zu finden, wie Sie der Benutzeridentität in MVC 5 mithilfe von ASP.NET Identity benutzerdefinierte Ansprüche hinzufügen. Das Beispiel sollte zeigen, wo die Ansprüche in die OWIN-Sicherheitspipeline eingefügt werden und wie sie in einem Cookie mithilfe der Formularauthentifizierung beibehalten werden.

Vielleicht kann der folgende Artikel helfen:

var claims = new List(); claims.Add(new Claim(ClaimTypes.Name, "Brock")); claims.Add(new Claim(ClaimTypes.Email, "brockallen@gmail.com")); var id = new ClaimsIdentity(claims,DefaultAuthenticationTypes.ApplicationCookie); var ctx = Request.GetOwinContext(); var authenticationManager = ctx.Authentication; authenticationManager.SignIn(id); 

Der richtige Ort zum Hinzufügen von Ansprüchen, vorausgesetzt Sie verwenden die ASP.NET MVC 5-Projektvorlage, befindet sich in ApplicationUser.cs . Suchen Add custom user claims here . Dies führt Sie zur GenerateUserIdentityAsync Methode. Dies ist die Methode, die aufgerufen wird, wenn das ASP.NET Identity-System ein ApplicationUser-Objekt abgerufen hat und dieses in eine ClaimsIdentity umwandeln muss. Sie werden diese Codezeile sehen:

 // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 

Danach ist der Kommentar:

 // Add custom user claims here 

Und schließlich gibt es die Identität zurück:

 return userIdentity; 

Wenn Sie also einen benutzerdefinierten Anspruch hinzufügen GenerateUserIdentityAsync sieht Ihr GenerateUserIdentityAsync möglicherweise so aus:

 // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); // Add custom user claims here userIdentity.AddClaim(new Claim("myCustomClaim", "value of claim")); return userIdentity; 

Wenn Sie zum Zeitpunkt der Registrierung benutzerdefinierte Ansprüche hinzufügen möchten, funktioniert dieser Code:

  var user = new ApplicationUser { UserName = model.UserName, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); // Associate the role with the new user await UserManager.AddToRoleAsync(user.Id, model.UserRole); // Create customized claim await UserManager.AddClaimAsync(user.Id, new Claim("newCustomClaim", "claimValue")); if (result.Succeeded) {...etc