현재 특정 사용자에게 역할을 부여하고 기본적으로 기능 인 사용 권한을 역할과 연결하는 구조가 있습니다. EditUser
, ViewUser
등그룹 및 개인 권한 디자인 MVC
사용자가 로그인하면 모든 권한이 인증 쿠키에로드되고 사용자 지정 권한 부여 특성이 기능에 액세스하는 데 필요한 권한이 있는지 확인합니다. 이것은 잘 작동합니다.
새로운 요구 사항은 개별 사용자에게 이 그룹 사용 권한 인을 재정의 할 수있는 권한을 갖도록하는 것입니다. 따라서 내 사용자가 EditUser
인 그룹에 있지만 특정 사용자에 대해 해당 권한을 제거하려는 경우 가능해야합니다. 같은 맥락에서, 사용자가 그 권한이없는 그룹에 있다면 우리는 필요할 경우 그 액세스 권한을 부여 할 수 있어야합니다. Windows 폴더 사용 권한과 비슷합니다.
가능한 경우 SQL에서이 작업을 수행하려고합니다. 보유한 모든 권한 목록을 반환하십시오. 나는 이것을 구현하는 최선의 방법이 확실하지 않다. 우리는 Roles
, Users
UserRoles
, Permissions
및 RolePermissions
입니다. 사용자는 해당 체인을 통해 권한에 연결됩니다.
나는 UserPermission
테이블을 만들 필요가 있다고 가정하지만,이 테이블의 행에 RolePermission
테이블의 행보다 우선하는 쿼리를 작성하는 방법을 잘 모르겠습니다.
모든 디자인 원칙이나 방향에 크게 감사드립니다. 필요한 경우 완전히 근절 할 용의가 있습니다.
편집 : 여기이 이러한 결과를 얻을 수있는 가장 좋은 방법입니다 경우 잘 모르겠어요 내 현재 쿼리
SELECT PermissionID, PermissionKey
FROM Permission p
INNER JOIN RolePermission rp ON rp.PermissionID = p.PermissionID
INNER JOIN UserRole ur ON ur.RoleID = rp.RoleID
INNER JOIN Users u ON u.UserID = ur.UserID
WHERE u.Username = @Username