在Asp.net Core中为多个声明提供基于授权的授权

从这篇文章得到帮助:

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

我试图为我的操作创建一些策略,但在一些操作中我想要有多个策略,并且如果用户具有其中的任何一个策略,则他们可以访问控制器的Actions:

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

我怎样才能合并这些政策? 我可以用这样的东西吗?

[Authorize(Policy =“CanAccessMenu1,CanAccessMenu2”)]

在这种情况下,也许我需要在这个覆盖函数中进行一些更改。 但我对此没有任何想法:

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

谢谢你的帮助


不是你想要的方式; 政策的设计是累积的。 例如,如果您使用两个单独的属性,则它们都必须通过。

您必须在单一策略内评估OR条件。 但是,您不必将它作为单个处理程序中的OR进行编码。 你可以有一个要求有多个处理程序。 如果任何一个处理程序标志成功,则满足要求。 请参阅blowdart授权研讨会中的第6步。

链接地址: http://www.djcxy.com/p/90185.html

上一篇: based Authorization for multiple Claims in Asp.net Core

下一篇: ASP.NET Core: Authorize and Secure Restful APIs