ASP.NET 5针对两个或多个策略进行授权

是否可以针对两个或更多策略应用授权? 我使用的是ASP.NET 5,rc1。

[Authorize(Policy = "Limited,Full")] public class FooBarController : Controller { // This code doesn't work } 

如果没有,我如何在不使用政策的情况下实现这一目标 有两组用户可以访问此控制器:“完整”和“有限”。 用户可以属于“完整”或“有限”,或两者都属于。 它们只需要属于两个组中的一个以访问该控制器。

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

您必须在单个策略中评估OR条件。 但是您不必在单个处理程序中将其编码为OR。 您可以拥有一个具有多个处理程序的需求。 如果任一处理程序标记成功,则满足要求。 请参阅我的授权工作室中的步骤6。

设置新策略“LimitedOrFull”(假设它们与声明类型名称匹配)后,创建如下要求:

 options.AddPolicy("LimitedOrFull", policy => policy.RequireAssertion(context => context.User.HasClaim(c => (c.Type == "Limited" || c.Type == "Full")))); 

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-2.1#using-a-func-to-fulfill-a-policy

Net Core可以选择让多个AuthorizationHandler具有相同的AuthorizationRequirement类型。 只有这些必须成功通过授权https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-2.1#why-would-i-want-multiple-handlers -对于-A-要求

尝试使用Role代替

 [Authorize(Role = "Limited,Full")]