Heim > Datenbank > MySQL-Tutorial > Wie kann ich .NET Core 2.1-Identitätsbenutzer und ihre zugehörigen Rollen effizient abrufen?

Wie kann ich .NET Core 2.1-Identitätsbenutzer und ihre zugehörigen Rollen effizient abrufen?

Linda Hamilton
Freigeben: 2024-12-17 15:40:11
Original
730 Leute haben es durchsucht

How to Efficiently Retrieve .NET Core 2.1 Identity Users and Their Associated Roles?

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; }
}
Nach dem Login kopieren

ApplicationUserRole

public class ApplicationUserRole : IdentityUserRole<string>
{
    public virtual ApplicationUser User { get; set; }
    public virtual ApplicationRole Role { get; set; }
}
Nach dem Login kopieren

ApplicationRole

public class ApplicationRole : IdentityRole
{
    public ICollection<ApplicationUserRole> UserRoles { get; set; }
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

Startup

services.AddIdentity<ApplicationUser, ApplicationRole>(options => options.Stores.MaxLengthForKeys = 128)
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
Nach dem Login kopieren

Razor-Seitencode (bezogene Daten eifrig laden)

this.Users = userManager.Users.Include(u => u.UserRoles).ThenInclude(ur => ur.Role).ToList();
Nach dem Login kopieren

ASP Core 2.2 Update

Für ASP Core 2.2 und höher, inhärent von IdentityUserRole keine Zeichenfolge. Darüber hinaus muss möglicherweise der Code in ModelBuilder entfernt werden, um erfolgreiche Migrationen zu ermöglichen.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage