Как проверить заявку на значение в запросе API (ASP.NET Core 2.2) - PullRequest
0 голосов
/ 05 марта 2019

Я использую идентификацию на основе утверждений в 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?

1 Ответ

3 голосов
/ 05 марта 2019

Я считаю, что в данном случае вы ищете авторизацию на основе ресурсов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...