Faire : ne vérifier que des droits (Right, RightOn<T>), jamais un Role — un rôle passé comme exigence est toujours refusé, car Right.Authorize compare l'IdentityName du droit à celui de l'exigence.
Faire : dans chaque RightOn<T>, implémenter Instantiate(string? v) en recopiant v dans ResourceValue — c'est par là que AuthorizeAsync<T>(id), les attributs AspNet/Blazor et GetAuthorizedResources<T> posent la ressource ; si on l'oublie, la vérification échoue sans erreur.
Faire : normaliser l'identifiant de ressource de la même façon dans Instantiate et dans les droits donnés par les rôles (casse, format) — la comparaison est une égalité stricte de chaînes.
Piège : plusieurs exigences dans un même appel sont cumulatives (ET) : toutes doivent être accordées, une seule ne suffit pas.
Piège : un RightOn<T> sans ResourceValue dans un rôle n'accorde pas l'accès à toutes les ressources : il ne correspond qu'à une exigence sans ressource. Pour un accès global, définir un Right distinct.
Piège : Role.Authorize ne regarde que ses Rights ; la ressource d'un RoleOn<T> (ResourceValueIdentity) n'intervient pas. Les droits fournis pour un RoleOn<T> doivent porter eux-mêmes leur ResourceValue.
Piège : IdentityName vaut par défaut GetType().FullName — renommer ou déplacer une classe de droit change son identité, et casse les droits stockés ou transmis sous ce nom.
Piège : GetAllResources() lève NotImplementedException par défaut ; le surcharger avant d'appeler GetAuthorizedResources<T>.
Faire : faire retrouver l'utilisateur courant par GetUserRoles quand user est null — les composants Blazor appellent AuthorizeAsync sans ClaimsPrincipal.
Piège : sans IRightsFactory<TRole> enregistré, RoleFactory.MakeRole<TRole> garde les droits posés par le constructeur du rôle (UpdateRights(null, …) ne les remplace pas).
Piège : le paquet dépend d'Anum.Ioc et d'Anum.Miscellaneous ([HumbabaService] dérive de ServiceAttribute) ; aligner leurs versions majeures sur celles de l'application.