从这篇文章获得帮助:
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies
我尝试为我的操作创建一些策略,但在某些操作中我想要有多个策略,如果用户有其中任何一个,他们可以访问控制器的操作:
[Authorize(Policy = "CanAccessMenu1")]
[Authorize(Policy = "CanAccessMenu2")]
public async Task<IActionResult> ActionFroMultiplePolicies([FromBody] ActionRequest request)
{
//..............
}
我该如何合并这些政策?我能用这样的东西吗?
[授权(政策=“CanAccessMenu1,CanAccessMenu2”)]
在这种情况下,我可能需要对此覆盖功能进行一些更改。但我对此一无所知:
Protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, CanAccessRequirement requirement)
{
}
感谢您的帮助
答案 0 :(得分:-2)
不是你想要的方式;政策旨在累积。例如,如果您使用两个单独的属性,那么它们必须都通过。
您必须在单个策略中评估OR条件。但是您不必在单个处理程序中将其编码为OR。您可以拥有一个具有多个处理程序的需求。如果任一处理程序标记成功,则满足要求。请参阅blowdart的Authoriation Workshop中的第6步。