Mit der ASP.NET Core-Identität erzeuge ich einen neuen Benutzer mit UserManager.CreateAsync()
und weise sie einer vorhandenen Rolle mit UserManager.AddToRoleAsync
zu. Dies funktioniert, da die Beziehung zwischen Benutzer und Rolle in der Tabelle AspNetUserRoles
der Datenbank gespeichert ist.Benutzer mit zugewiesenen Rollen abrufen
Aber wenn ich den Benutzer mit dem UserManager (z. B. UserManager.FindByMail()
Methode) abrufen, dann ist die Role
Liste leer. Ich habe auch versucht die Include
Funktion von EF wie folgt aus:
var user = userManager.Users.Include(u => u.Roles).FirstOrDefault(u => u.Email == "[email protected]");
Das gab mir die Ids der n: m-Zuordnungstabelle, die nicht sehr nützlich ist, wie ich die Rollennamen müssen. Das Laden mit einer zweiten Abfrage ist ebenfalls nicht möglich, da das Attributdes Identitätsbenutzers schreibgeschützt ist. Ich würde erwarten, einen List<string>
der Rollennamen zu bekommen. Konnte keine Informationen darüber finden.
Für mich scheint die einzige Problemumgehung ein benutzerdefiniertes Attribut zu meinem Benutzer hinzufügen und füllen Sie sie mit den Daten, die ich mit einer zweiten Abfrage abrufen. Aber das ist keine schöne Lösung. Cant glauben, dass ASP.NET Core Identity hat keinen besseren Weg, um diese Daten zu bekommen ...
Fordern Sie keine Tags in den Titel! – Tseng