Je comprends que je peux utiliser des revendications pour faire des déclarations sur un utilisateur:
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, "Peter"));
claims.Add(new Claim(ClaimTypes.Email, "[email protected]"));
Mais comment dois-je stocker les revendications "basées sur les rôles"? Par exemple:
L'utilisateur est un super administrateur.
claims.Add(new Claim("IsSuperAdmin, "true"));
Le paramètre de valeur "true" est totalement redondant. Sinon, comment cette déclaration peut-elle être exprimée à l'aide de revendications?
Ceci est déjà fait pour vous par le framework. Lorsque l'utilisateur est connecté, tous les rôles d'utilisateur sont ajoutés en tant que revendications, le type de revendication étant ClaimTypes.Role
et les valeurs sont le nom du rôle.
Et lorsque vous exécutez IPrincipal.IsInRole("SuperAdmin")
, le framework vérifie si la revendication de type ClaimTypes.Role
et la valeur SuperAdmin
sont présentes sur l'utilisateur.
Donc, ne devez rien faire de spécial. Ajoutez simplement un utilisateur à un rôle.
Vous pouvez stocker des rôles à l'aide de ClaimType Role
claims.Add(new Claim(ClaimTypes.Role, "SuperAdmin"));
Vous devez spécifier le rôle dans une revendication avec un type ClaimsType.Role, puis spécifier le type de revendication contenant le rôle dans ClaimsIdentity, comme indiqué ci-dessous.
var claimsIdentity = new ClaimsIdentity(new[]
{
new Claim(ClaimTypes.Email, "[email protected]"),
new Claim(ClaimTypes.Name, "Peter"),
new Claim(ClaimTypes.Role, "SuperAdmin"),
},
"ApplicationCookie", ClaimTypes.Email, ClaimTypes.Role);
Cela vous permettra ensuite d'utiliser l'attribut [Authorize(Roles = "SuperAdmin")]
dans vos contrôleurs.