Est-il possible d'appliquer une autorisation à deux politiques ou plus? J'utilise ASP.NET 5, rc1.
[Authorize(Policy = "Limited,Full")]
public class FooBarController : Controller
{
// This code doesn't work
}
Sinon, comment puis-je y parvenir sans utiliser de politiques? Deux groupes d'utilisateurs peuvent accéder à ce contrôleur: "Complet" et "Limité". Les utilisateurs peuvent appartenir à "Full" ou "Limited", ou aux deux. Ils ont seulement besoin d'appartenir à l'un des deux groupes pour accéder à ce contrôleur.
Pas comme vous le souhaitez; les politiques sont conçues pour être cumulatives. Par exemple, si vous utilisez deux attributs distincts, ils doivent tous deux réussir.
Vous devez évaluer les conditions OR au sein d'une même politique. Mais vous n'avez pas à la coder en tant que OU dans un seul gestionnaire. Vous pouvez avoir une exigence qui a plus d'un gestionnaire. Si l'un des gestionnaires marque le succès, alors l'exigence est remplie. Voir l'étape 6 dans mon Atelier d'autorisation .
Une fois la nouvelle stratégie "LimitedOrFull" configurée (en supposant qu'ils correspondent aux noms des types de revendications), créez une exigence comme celle-ci:
options.AddPolicy("LimitedOrFull", policy =>
policy.RequireAssertion(context =>
context.User.HasClaim(c =>
(c.Type == "Limited" ||
c.Type == "Full"))));
Net Core a une option pour avoir plusieurs AuthorizationHandlers qui ont le même type AuthorizationRequirement. Un seul d'entre eux doit réussir à passer l'autorisation https://docs.Microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-2.1#why-would-i- want-multiple-handlers-for-a-requirements