ASP.NET 5授权对两个或两个以上的政策

问题描述 投票:26回答:4

是否可以申请授权,对两个或两个以上的政策?我使用ASP.NET 5,RC1。

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

如果没有,我怎么可能做到这一点,而不使用的政策?有迹象表明,可以访问该控制器的用户的两组:“完全”和“有限”。用户既可以属于“完全”或“有限”,或两者兼而有之。他们只需要属于两组之一,以访问该控制器。

c# asp.net-core authorization asp.net-core-mvc
4个回答
28
投票

不是你所希望的方式;政策的目的是累积性的。例如,如果您使用两个单独的属性,那么它们必须通过。

你必须评估或单个策略中的条件。但是你没有把它作为一个单一的处理程序中的OR编码。你可以拥有一个以上的处理器的要求。如果任何处理程序的旗成功,则要求得到满足。见第6步在我Authorization Workshop


11
投票

一旦建立了新的政策“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


4
投票

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


-34
投票

尝试使用替代的作用

[Authorize(Role = "Limited,Full")]
© www.soinside.com 2019 - 2024. All rights reserved.