Нужно внедрить систему.Не можете придумать, как структурировать таблицу для переопределений прав пользователей.Скажем, я даю новому пользователю «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, но я подумал, что может быть какая-то функциональность.Спасибо.