Ich bin ein ASP.NET Core Anfänger. Ich stecke in Rollen-, Claim- und Nutzerbeziehung fest.ASP.NET Core Identität Rolle, Anspruch und Benutzer
Ich habe einen Benutzer Ben, Benutzer gehört zu Admin Rolle. Admin Rolle hat Ansprüche View-Seite und Edit-Seite in der Datenbank.
Aber ich kann nicht Ansprüche und Rollen erhalten zu diesem Benutzer gehören zu:
(Siehe Kommentar in Code)
var user = await _userManager.FindByNameAsync(applicationUser.UserName);
if(user != null) {
var userClaims = await _userManager.GetClaimsAsync(user); // empty, WHY ?
var userRoles = await _userManager.GetRolesAsync(user); // ['admin']
var adminRole = DbContext.Roles.FirstOrDefault(x => x.Name == "Admin");
IList<Claim> adminClaims;
if(adminRole != null)
{
adminClaims = await _roleManager.GetClaimsAsync(adminRole);
// correct => ['view-page', 'edit-page']
}
}
}
In meinem Kopf, ich verstehe, wenn ein Benutzer ein Mitglied ist von einer Rolle erbt er die Ansprüche dieser Rolle.
Standard ASP.NET Identität haben 5 Tabellen:
- Benutzer.
- Rollen.
- UserRoles - Ein Benutzer kann viele Rollen haben.
- Rollenklagen - Eine Rolle kann viele Ansprüche haben.
- UserClaims - Ein Benutzer kann viele Ansprüche haben.
Denke ich richtig? Warum gibt userManager.GetClaimsAsync (user) leere Ansprüche zurück?
Irgendwelche Vorschläge?
Ich brauche Benutzeransprüche, um JWT in der Web-API zu erstellen, wenn das Token also keine gültigen Benutzeransprüche/-rollen enthält, kann ich User.Claims nicht verwenden. Und ich denke UserManager.GetClaimsAsync (user) fragt die UserRoles-Tabelle ab, genau, es fragt die UserClaims-Tabelle ab. Haben Sie Vorschläge für diese Situation? – trinvh
@trinvh "UserManager.GetClaimsAsync (Benutzer) Abfragen der UserRoles" war ein Tippfehler, korrigiert es Dank – tmg
Ich markierte richtige Antwort wegen der oben genannten Link. Für jeden, der Benutzeransprüche erhalten möchte, muss createAsync-Methode angezeigt werden – trinvh