如何检查 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
中使用基于声明的身份
据我了解,可以使用以下格式进行自定义 claims/policy 授权(在 答案中找到)
[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 端点的每个请求都不同的策略要求检查器?
我在 ASP.NET Core 2.2
中使用基于声明的身份据我了解,可以使用以下格式进行自定义 claims/policy 授权(在
[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 端点的每个请求都不同的策略要求检查器?