Erhalten von .NET Core 2.1 Identity-Benutzern und zugehörigen Rollen
In .NET Core Identity kann das Abrufen von Benutzern und ihren zugehörigen Rollen eine Herausforderung sein. Während frühere Versionen von Identity eine integrierte Roles-Eigenschaft in ApplicationUser bereitstellten, ist diese Funktion nicht mehr vorhanden.
Lösung
Um dieses Problem zu beheben, implementieren Sie Folgendes Lösung:
ApplicationUser
public class ApplicationUser : IdentityUser { public ICollection<ApplicationUserRole> UserRoles { get; set; } }
ApplicationUserRole
public class ApplicationUserRole : IdentityUserRole<string> { public virtual ApplicationUser User { get; set; } public virtual ApplicationRole Role { get; set; } }
ApplicationRole
public class ApplicationRole : IdentityRole { public ICollection<ApplicationUserRole> UserRoles { get; set; } }
ApplicationDbContext (Beziehungen hinzugefügt, Seed konfiguriert)
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string, IdentityUserClaim<string>, ApplicationUserRole, IdentityUserLogin<string>, IdentityRoleClaim<string>, IdentityUserToken<string>> { public DbSet<ApplicationUserRole> UserRoles { get; set; } // migrations omitted for brevity }
Startup
services.AddIdentity<ApplicationUser, ApplicationRole>(options => options.Stores.MaxLengthForKeys = 128) .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders();
Razor-Seitencode (bezogene Daten eifrig laden)
this.Users = userManager.Users.Include(u => u.UserRoles).ThenInclude(ur => ur.Role).ToList();
ASP Core 2.2 Update
Für ASP Core 2.2 und höher, inhärent von IdentityUserRole
Ich habe versucht, einer vorgeschlagenen Lösung zu folgen, aber es kam zu folgendem Fehler: „Unbekannte Spalte „u.Roles.ApplicationUserId“ in „field Liste''. Um dieses Problem zu beheben, habe ich einen GitHub-Kommentar/ein GitHub-Problem recherchiert und die oben beschriebene Lösung implementiert. Die wichtigsten Änderungen umfassten das Erstellen neuer ApplicationUserRole- und ApplicationRole-Klassen, das Aktualisieren der ApplicationUser-Klasse, um die neue Beziehung widerzuspiegeln, und das Hinzufügen einer benutzerdefinierten Konfiguration zum Modellgenerator im DbContext. Durch eifriges Laden der UserRoles des Benutzers und dann der Rolle der UserRole konnte ich die Benutzer und ihre zugehörigen Rollen erfolgreich abrufen.
Das obige ist der detaillierte Inhalt vonWie kann ich .NET Core 2.1-Identitätsbenutzer und ihre zugehörigen Rollen effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!