.NET Core中的自定义授权属性
我正在.NET Core 1.1中构建一个API。 我在HttpContext.User
中构建了一个自定义User
对象,该控制器是我所有其他控制器inheritance的基本控制器,我默认启用了身份validation(必要时必须手动禁用[AllowAnonymous]
)。 User
对象具有IsAdmin
属性。 现在我正在检查用户是否是每个相关function顶部的管理员,如下所示,但我觉得必须有一种方法来添加自定义属性来简化和清理此代码。
作为参考, User.IsAdmin
是这方面的简写:
bool.Parse(HttpContext.User.FindFirst("IsAdmin")?.Value)
而不是这个:
[HttpGet] public async Task Get() { if (!User.IsAdmin) return Forbid(); // logic }
我喜欢这个(或类似的东西):
[AdminOnly] [HttpGet] public async Task Get() { // logic }
我试着查看[AuthorizeAttribute]
的源代码来尝试构建,但它只是一个shell而且我不知道真正的魔法发生在哪里。
我怎么能做到这一点?
@JoeAudette建议的解决方案似乎是最好的选择。
在Startup.cs
创建自己的策略:
options.AddPolicy("PolicyName", p => { p.RequireAuthenticatedUser(); p.RequireClaim("IsAdmin", true); <- your criteria here (claim type, claim value) ??? p.Build(); });
然后只需将其用作属性:
[Authorize("PolicyName")]
- 如何使用UserManager在IdentityUser上加载导航属性
- ASP.NET Core通过web.config授权AD组
- 用于Windows x64的ASP.NET核心应用程序(.NET Framework)仅在project.assets.json中出错
- 使用授权标头(Bearer)设置Swagger(ASP.NET Core)
- 实体类型“类型”处于阴影状态。 有效模型要求所有实体类型都具有相应的CLR类型
- 如何仅向授权用户提供静态文件?
- 如何使用Web API Get方法返回图像
- DNX SDK版本’dnx-clr-win-x86.1.0.0-beta8-15530’无法安装
- 在ASP.NET Core 2.0中找不到AddJsonOptions