如何检查API请求中的值声明(ASP.NET Core 2.2)

问题描述 投票:0回答:1

我在ASP.NET Core 2.2中使用基于声明的身份

根据我的阅读,可以使用以下格式进行自定义声明/政策授权(可在this答案中找到)

[Authorize(Policy = "DataDrivenExample")]
public IActionResult GetFooBar()
{
    // Omitted for brevity...
}

但是,在我的应用程序中,我需要检查用户是否可以访问此特定对象。例如,像这样:

[Authorize(Policy = "EditFooBar:" + id)]
public IActionResult EditFooBar(string id)
{
    // Omitted for brevity...
}

处理程序然后这样......?

public class EditFooBarHandler : AuthorizationHandler<DataDrivenRequirement>
{

protected override void Handle(AuthorizationContext context, 
                               string id)
{
    var hasClaim = context.HttpContext.User.Claims.Any(c => c.Type == "EditFooBar" && c.Value == id);
    ...etc...
}

id的每个可能值制定单独的政策是不可行的。

基本上,我如何将数据传递到对该API端点的每个请求都不同的策略要求检查器?

c# asp.net-core claims-based-identity
1个回答
3
投票

我相信在这种情况下您要寻找的是基于资源的授权。

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/resourcebased?view=aspnetcore-2.2

© www.soinside.com 2019 - 2024. All rights reserved.