是否可以申请授权,对两个或两个以上的政策?我使用ASP.NET 5,RC1。
[Authorize(Policy = "Limited,Full")]
public class FooBarController : Controller
{
// This code doesn't work
}
如果没有,我怎么可能做到这一点,而不使用的政策?有迹象表明,可以访问该控制器的用户的两组:“完全”和“有限”。用户既可以属于“完全”或“有限”,或两者兼而有之。他们只需要属于两组之一,以访问该控制器。
不是你所希望的方式;政策的目的是累积性的。例如,如果您使用两个单独的属性,那么它们必须通过。
你必须评估或单个策略中的条件。但是你没有把它作为一个单一的处理程序中的OR编码。你可以拥有一个以上的处理器的要求。如果任何处理程序的旗成功,则要求得到满足。见第6步在我Authorization Workshop。
一旦建立了新的政策“LimitedOrFull”(假设他们符合要求的类型名称)创建这样一个要求:
options.AddPolicy("LimitedOrFull", policy =>
policy.RequireAssertion(context =>
context.User.HasClaim(c =>
(c.Type == "Limited" ||
c.Type == "Full"))));
NET内核有一个选项,具有相同AuthorizationRequirement类型的多个AuthorizationHandlers。只有其中一个必须成功通过授权https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-2.1#why-would-i-want-multiple-handlers-for-a-requirement
尝试使用替代的作用
[Authorize(Role = "Limited,Full")]