4

obtenu l'aide de cet article:basé sur le fondement des revendications multiples dans Asp.net de base

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies

j'ai essayé de créer des politiques pour mes actions, mais dans certaines actions que je veux avoir plusieurs politiques , et si l'utilisateur a l'un d'eux, ils peuvent avoir accès à des actions de contrôleur:

[Authorize(Policy = "CanAccessMenu1")] 
    [Authorize(Policy = "CanAccessMenu2")] 
public async Task<IActionResult> ActionFroMultiplePolicies([FromBody] ActionRequest request) 
     { 
//.............. 
} 

comment puis-je fusionner ces politiques? puis-je utiliser quelque chose comme ça?

[Authorize (Politique = "CanAccessMenu1, CanAccessMenu2")]

Dans ce cas, peut-être que je dois avoir quelques changements dans cette fonction de remplacement. Mais je n'ai aucune idée à ce sujet:

Protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, CanAccessRequirement requirement) 
     { 
     } 

Merci pour toute aide

Répondre

0

pas comme vous voulez; les politiques sont conçues pour être cumulatives. Par exemple, si vous utilisez deux attributs séparés, ils doivent tous les deux réussir.

Vous devez évaluer les conditions OR dans une seule politique. Mais vous n'avez pas à le coder en tant que ORs dans un seul gestionnaire. Vous pouvez avoir une exigence qui a plus d'un gestionnaire. Si l'un des gestionnaires signale le succès, l'exigence est satisfaite. Voir l'étape 6 dans Authoriation Workshop blowdart.