Nabû 1.0.0
Standardizing .NET developments with abstractions
rules

ianchor-autotoc_md13ilinebr

summary: Règles d'usage de Humbaba.Authorization.

  • 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.