Реализация точных разрешений в ASP.NET Core 3 - PullRequest
1 голос
/ 23 октября 2019

Я хотел бы предоставить детализированные разрешения для моего нового приложения ASP.NET Core 3. В приложении будет много областей (пара при запуске, но каждая новая функция будет сопровождаться другой областью для контроля доступа), и я подозреваю, что рано или поздно мне потребуется точный контроль доступа (например, этот пользовательдолжен иметь доступ к тому, что Employee может иметь ПЛЮС области X, Y RW и область Z RO).

Самостоятельно реализовать такой механизм, но я бы хотел использовать встроенные механизмы ASP, чтобы не записывать все изцарапина. Исходя из того, что я читал о механизмах авторизации в ASP.NET Core, я бы пошел следующим образом:

  • Предоставление утверждений для пользователей, которые будут контролировать доступ к определенной области с помощью флага (скажем,, List, Read, Write, Delete, Admin)
  • Создать реализацию IAuthorizationPolicyProvider, которая бы на лету создавала определенные политики на основе переданного параметра, скажем: [Authorize(Policy = "Area1,r")] или [Authorize(Policy = "Area5,a")] (с использованием обработчиков)создано на лету)
  • Зарегистрируйте мой пользовательский IAuthorizationPolicyProvider в системе внедрения зависимостей

Если честно, мне кажется, что для меня это немного сложнее, чем я могу реализоватьмой собственный атрибут авторизации, который - для начала - упростил бы ввод ограничений (в том смысле, что ошибки в определении доступа будут обнаруживаться во время компиляции, а не во время работы приложения):

[RestrictAccess(Areas.Area1, AreaAccess.Read)]
public IActionResult MyAction() { }

Однако, похоже, этобыть решением, которое уклоняется от использования механизмов ASP.NET Core, потому что тот, который я представил ранее, кажется, как Microsoft хочет, чтобы мы использовалиполитики (см. Пользовательская политика авторизации )

TL; DR: Каков правильный способ реализации таких детальных разрешений в ASP.Net Core 3? И, кроме того, каковы реальные преимущества реализации разрешений, предлагаемых Microsoft?

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