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"))));
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")]
- Asp.net Core Post参数始终为null
- 从类库项目中访问appsettings.json文件设置
- ASP.NET 5 Identity 3用户在应用程序重新启动后退出
- 如何使用Reflection或其他准确方法获取控制器内的当前ASP.NET核心控制器方法名称
- 如何将自定义角色添加到ASP.NET Core
- ASP.NET Core RC2项目参考“无法解析依赖关系X”
- 在.Net Core 2.0和Angular中使用’dotnet publish’时找不到模块’aspnet-webpack’
- 你如何在ASP 5(vnext)中抛出HttpResponseException
- 在ASP.NET Core 2中dependency injection相同类型的多个实例