ASP. NET Идентификационные группы пользователей и роли - PullRequest
0 голосов
/ 12 апреля 2020

Я использую ASP.NET identity и хочу правильно организовать user roles и groups. Как известно, мне нужно использовать следующие таблицы, и я планирую определить эти определения группы ролей:

ApplicationGroup : администратор, менеджер, персонал, пользователь

ApplicationGroupRoles (роли для создания записи) :

Администратор: CanCreateX, CanCreateY, CanCreateZ, CanCreateT

Менеджер: CanCreateY, CanCreateZ, CanCreateT

Персонал: CanCreateZ, CanCreateT

Пользователь: CanCreateT

ApplicationUserGroups :

Пользователь A: Admin

Пользователь B: Менеджер

Пользователь C: Персонал

Пользователь D: Пользователь

И в Controllers я определяю роли для для метода:

[Authorize(Roles = "CanCreateT")]
public ActionResult CreateT()
{
    //todo
}

1) Насколько я понял, мы определяем роли и используем его в связанных Controller методах. Мы также группируем эти роли в таблице ApplicationGroupRoles и можем присвоить один и тот же Role нескольким Group. Например, CanCreateT роль отводится 4 различным группам ролей. Является ли этот подход верным?

2) Что касается таблицы ApplicationUserGroups, мы назначаем каждого пользователя в группу ролей. Однако на данный момент представляется возможным назначить пользователя различным группам ролей. Является ли этот подход выше верным, или мы должны дать роль одной группе и назначить пользователя нескольким группам (в этом случае User A назначается 4 группы пользователей)?

Какой подход лучше или лучше?

1 Ответ

0 голосов
/ 13 апреля 2020

Группы не поддерживаются из коробки: только роли. Таким образом, вы сами решаете, как вы хотите с этим справиться, и никто не может принять это решение за вас. Вы можете использовать группу как способ группировки ролей, и просто использовать это для назначения / отмены назначения ролей пользователю за кулисами. Вы можете создавать политики для групп и полностью полагаться на групповое назначение вместо ролей (используйте [Authorize(Policy = "...")]). Или вы могли бы сделать своего рода гибрид из двух. Вам нужно выяснить, что лучше всего подходит для вашего приложения.

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