#authentication #authorization #asp.net-core-webapi #multi-tenant
#аутентификация #авторизация #asp.net-core-webapi #многопользовательский
Вопрос:
Я пытаюсь построить ASP.NET основной API, где у меня есть несколько групп пользователей. У этих групп есть общая база данных, но оттуда они могут видеть только записи, назначенные им.
Например, пользователь XYZ, вызывающий контроллер, возвращающий значения из таблицы Products, видит только те, которые были назначены его группе. И то же самое, когда он добавляет новый продукт, его видят только пользователи его группы, а другие группы не знают о существовании этого Продукта.
Я хотел бы попросить вас объяснить мне, как это сделать в ASP.NET ядро, какие библиотеки я мог бы использовать, потому что, к сожалению, я не знаю, как это сделать.
Заранее благодарю вас за вашу помощь.
Ответ №1:
Я не думаю, что вам нужно искать библиотеку или фреймворк для ее создания, вы можете выполнить реализацию следующим образом,
- Создайте таблицу, которая читается как
ProductPermissions
- Внесите запись для идентификатора записи, идентификатора группы, идентификатора роли в эту таблицу
- После того, как пользователю назначена группа, соответствующие таблицы должны иметь такие значения, как
UserDetails
,UserGroups
,UserRoles
и т. Д - Когда я хочу увидеть список продуктов, которые доступны для меня, я делаю запрос к
GetProducts
API. - API получает мой идентификатор пользователя из процесса аутентификации, ролей и идентификаторов групп
- Теперь вам нужно объединить таблицу продуктов и
ProductPermissions
таблицу с ключами и отфильтровать по назначенному мне идентификатору группы. - Та же логика применяется ко всем операциям с сущностями, которые я выполняю, любое действие будет проверяться по
ProductPermissions
таблице.
Примечание
Чтобы получить общую таблицу, а не избыточную ProductPermissions
, вы можете иметь таблицу as EntityPermissions
, а затем иметь EntityId (например: Product
, Category
и т. Д.) В качестве столбца, Который будет использоваться фильтром при объединении, Чтобы у вас была одна таблица для всех объектов.