La distinzione tra ruoli e attestazioni è che i ruoli descrivono un insieme di utenti e le attestazioni descrivono una proprietà di un utente. Quindi può esserci un ruolo "Amministratore", ma può anche esserci un reclamo "HasElevatedPrivilegeBadge". Entrambi possono consentire la stessa azione. Ora quale devo scegliere se voglio consentire solo a certe persone di fare certe cose, ad esempio:
CanAddItem, CanUpdateItem, CanDeleteItem,
CanAddProduct, CanUpdateProduct, CanDeleteProduct
Potrei creare un ruolo "Amministratore" e aggiungere ad esso "CanAddItem", "CanUpdateItem", ecc., ma "CanAddItem" non descrive una proprietà di un utente. Dice ciò che l'utente può fare, che non è quello che dovrebbe fare un reclamo, dovrebbe?
Un altro approccio è quello di creare criteri, come ad esempio:
policy.AddPolicy("CanAddItem", policy => {
policy.RequireAuthenticatedUser()
.RequireRole("Administrator");
});
Ma per più di 20 criteri, ci vorrà una buona parte della mia classe Startup
. C'è un altro modo per farlo, o è uno di questi il preferito?
Vorrei sottolineare che sono specificamente alla ricerca di una soluzione per .Net Core Identity. Sto chiedendo una soluzione su come adattare il mio requisito alle tabelle di identità fornite dal framework.