Что является наиболее подходящим способом обработки авторизации, когда пользователи могут иметь несколько ролей в нескольких местах в dotnet CORE - PullRequest
0 голосов
/ 07 мая 2019

У меня есть приложение NET CORE, где пользователи могут иметь несколько ролей;SiteEmployee, SiteAdmin и CompanyAdmin.Все эти роли связаны с конкретным сайтом / компанией.Пользователь может иметь разные роли в разных местах (вы можете быть SiteEmployee на сайте и CompanyAdmin в компании одновременно).Использование ролей означает, что [Authorize (Roles = ”CompanyAdmin”)] предоставит ему доступ во ВСЕХ компаниях, а не только в той, к которой он должен иметь доступ.

Прямо сейчас я обрабатываю это с помощью ASP.Сетевые роли и назначение пользователей сайтам / компаниям в таблицах базы данных.Я понял, что использую роли только для проверки доступа к методам контроллера с помощью [Authorize (Roles = ”SiteEmployee”)], но в методах, которые я ТАКЖЕ должен проверить, является ли пользователь частью этого конкретного сайта,Это означает, что я должен авторизовать пользователя два раза.Использование ролей кажется излишним, но это также кажется проблемой, с которой столкнутся другие.Таким образом, для этого должно быть достойное решение.

Итак, мой вопрос заключается в следующем: каков наиболее подходящий способ обработки этой авторизации?

Я изучил реализацию своей собственной версии Authorize, иполучение параметра из метода, который его реализует, но, насколько я могу судить, это невозможно.Я также изучал использование авторизации на основе ресурсов, но не уверен, что это именно то, что мне нужно.

...