簡體   English   中英

如何檢查API請求中的值聲明(ASP.NET Core 2.2)

[英]How to check claim for value in API request (ASP.NET Core 2.2)

我在ASP.NET Core 2.2中使用基於聲明的身份

根據我的閱讀,可以使用以下格式(在答案中找到)進行自定義聲明/政策授權

[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端點的每個請求都不同的策略要求檢查器中?

我相信在這種情況下,您要尋找的是基於資源的授權。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM