Утверждения пользователя переопределяют схему утверждений роли - PullRequest
0 голосов
/ 23 октября 2018

Нужно внедрить систему.Не можете придумать, как структурировать таблицу для переопределений прав пользователей.Скажем, я даю новому пользователю «JoeAnalyst» в бизнес-роли «Аналитик», роль с правами на чтение для компании. Другой ролью может быть «Старший аналитик», они могут создавать, читать, обновлять и удалять в компании.,Я хочу предоставить переопределение пользователю "JoeAnalyst", чтобы иметь возможность обновлять компанию, но не создавать совершенно новую роль.Логически, у меня была бы таблица UserClaims (как у Identity уже есть).

    Users: 
    Id,     Name
    1   Joe 
    2   Frank

    Roles: 
    Id, Name
    1   Analyst
    2   Senior Analyst

    Claims:
    Id, Name
    1   Company.Create
    2   Company.Read
    3   Company.Update
    4   Company.Delete

    RoleClaims:
    Id,     RoleId  ClaimId
    0   1   2
    1   2   1
    2   2   2
    3   2   3
    4   2   4

    UserRoles
    Id  UserId  RoleId
    0   1   1

Вопрос лежит в основе таблицы UserClaims.В случае добавления дополнительного разрешения я мог видеть схему вроде:

    UserClaims (option 1)
    Id  UserId  ClaimId
    0   1   3   
    1   2   4   

Но это не позволяет отменить разрешение роли.Так что-то вроде этого лучше:

    UserClaims (option2)
    Id  UserId  ClaimId Override
    0   1   3   'ALLOW'
    1   2   4   'DENY'

Но простой текст (или int) кажется странным.Тогда я подумал:

    UserClaimsGrant (option3)
    Id  UserId  ClaimId 
    0   1   3       

    UserClaimsDeny
    Id  UserId  ClaimId     
    0   2   4

Какая система лучше, и идентичность уже делает это?Я только каждый видел таблицу UserClaims, как вариант 1 в Identity, и я, безусловно, могу расширить Identity, но я подумал, что может быть какая-то функциональность.Спасибо.

...