Как ограничить только подмножество маршрутов авторизации WebApi? - PullRequest
0 голосов
/ 15 февраля 2020

У нас есть приложение, которое требует, чтобы некоторые пользователи не могли получить доступ к большинству доступных маршрутов, а имели доступ только к нескольким. Мы используем стандартные. net [анонимные] аннотации для вызовов publi c, но необходимо добавить дополнительный слой между разрешением одних вызовов и запретом других.

Есть ли способ добавить пользовательские logi c для функции авторизации, основанной на некоторой аннотации?

1 Ответ

2 голосов
/ 15 февраля 2020

Да, вам требуется авторизация на основе политики .

. С первого взгляда Вам необходимо:

  1. Добавить конфигурацию политики (имя и набор правила, которые должны быть выполнены, чтобы считать пользователя членом этой группы, определенной политикой) как часть ConfigureServices(IServiceCollection) конфигурации,
  2. Определить IAuthorizationRequirement для политики. Они должны быть удовлетворены для того, чтобы классифицировать пользователя как часть политики. Эти требования будут подтверждены IAuthorizationHandler<T>, которые должны рассматриваться как обычные услуги. На самом деле это парень, который решает, будет ли правило в отношении пользователя или нет, вызывая либо Success, либо Fail в данном контексте. Мы не возвращаем true или false здесь, просто вызываем один из этих двух методов, чтобы принять решение.
  3. Добавьте правильные атрибуты Вашим контроллерам и / или действиям.

Использование политики является более общим c подходом, чем роли, но Вы также можете использовать их, если они у вас уже определены. Политики больше похожи на то, что Вы должны пройти «, а авторизация на основе ролей - больше на« кто ты ».

...