我在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端点的每个请求都不同的策略要求检查器?