Ich versuche, eine Website in ASP.NET Core MVC zu erstellen, und verwende die Microsoft.Identity-Bibliothek. Ich habe eine benutzerdefinierte Eigenschaft in meiner User
(ApplicationUser) -Klasse, die Token
genannt wird. Ich möchte einen Cookie bei der Anmeldung mit diesem Token erstellen. Also muss ich eine Funktion aufrufen, mit der ich das Attribut Token
vom angemeldeten Benutzer holen kann (über UserManager oder was auch immer. Es muss der angemeldete Benutzer sein.)ASP.NET Core MVC benutzerdefinierte Identitätseigenschaften
Ich habe im Internet gesucht und gefunden mehrere Lösungen, indem Sie eine benutzerdefinierte Factory erstellen und dann zur startup.cs Like this hinzufügen. Aber ich kann keine Möglichkeit finden oder sehen, wie ich auf die Immobilie zugreifen kann. User.Identity.GetToken()
funktioniert nicht.
Hier ist meine individuelle Fabrik:
public class CustomUserIdentityFactory : UserClaimsPrincipalFactory<User, IdentityRole>
{
public CustomUserIdentityFactory(UserManager<User> userManager, RoleManager<IdentityRole> roleManager, IOptions<IdentityOptions> optionsAccessor) : base(userManager, roleManager, optionsAccessor)
{}
public override async Task<ClaimsPrincipal> CreateAsync(User user) {
var principal = await base.CreateAsync(user);
if(!string.IsNullOrWhiteSpace(user.Token)) {
((ClaimsIdentity)principal.Identity).AddClaims(new[] {
new Claim(ClaimTypes.Hash, user.Token)
});
}
return principal;
}
}
Hier ist der configure in meinem Startup.cs
services.AddScoped<IUserClaimsPrincipalFactory<User>, CustomUserIdentityFactory>();
So lange Geschichte kurz: Ich habe eine benutzerdefinierte Identität Eigenschaft zuzugreifen versuchen und habe eine gefunden Möglichkeit, es dem UserManager hinzuzufügen, aber keine Möglichkeit finden, darauf zuzugreifen.
Ich habe eine Umgehung, indem Sie den Cookie nach dem Benutzer angemeldet, indem Sie den Benutzer mit '(warten _userManager.GetUserAsync (HttpContext.User)). Token' –