thinkphp의 RBAC 사용자 권한 관리 데이터베이스 디자인에 대한 자세한 그래픽 설명

黄舟
풀어 주다: 2017-05-18 10:26:10
원래의
3956명이 탐색했습니다.

RBAC(Role-Based Access Control, 역할 기반 액세스 제어)는 사용자가 역할을 통해 권한과 연결된다는 의미입니다. 간단히 말해서 사용자에게는 여러 역할이 있고 각 역할에는 여러 권한이 있습니다. 이런 식으로 "사용자 역할 권한"의 권한 부여 모델 이 구성됩니다. 이 모델에서는 일반적으로 사용자와 역할, 역할과 권한 간에 다대다 관계가 있습니다. (아래 그림 참조)

어떤 역할인가요? 이는 특정 수의 권한의 집합이자 권한의 전달자로 이해될 수 있습니다. 예를 들어 포럼 시스템에서는 "최고 관리자"와 "운영자"가 역할입니다. 중재자는 포럼의 게시물을 관리하고, 포럼의 사용자를 관리하는 등의 권한을 가질 수 있습니다. 사용자에게 이러한 권한을 부여하기 위해 사용자에게 직접 권한을 부여할 필요는 없습니다. 사용자에게 "조정자" 역할을 부여할 수 있습니다.

사용자 수가 매우 많을 경우 시스템의 각 사용자에게 하나씩 권한을 부여(역할 부여)하는 것은 매우 번거롭습니다. 이때 사용자는 그룹화되어야 하며, 각 사용자 그룹에는 여러 명의 사용자가 있습니다. 사용자 권한 부여 외에도 사용자 그룹에도 권한을 부여할 수 있습니다. 이런 방식으로 사용자가 갖는 모든 권한은 사용자가 개인적으로 소유한 권한과 해당 사용자가 속한 사용자 그룹이 소유한 권한의 합입니다. (아래 그림은 사용자 그룹, 사용자, 역할 간의 관계를 보여줍니다.)

응용 시스템에서는 권한 성능이 무엇입니까? ? 기능 모듈의 작동, 업로드된 파일의 삭제 및 수정, 메뉴 접근, 특정 버튼 및 특정 사진의 가시성 제어까지 페이지의 내용은 모두 권한 범위에 속할 수 있습니다. 일부 권한 설계에서는 기능적 작업을 하나의 범주로, 파일, 메뉴, 페이지 요소 등을 다른 범주로 처리하여 "사용자 역할-권한-리소스" 권한 부여 모델을 형성합니다. 데이터 테이블 모델링을 수행할 때 기능적 작업과 리소스를 통합된 방식으로 관리할 수 있습니다. 즉, 권한 테이블과 직접 연결되므로 더욱 편리하고 확장 가능합니다. (아래 그림 참조)

권한 테이블에 "권한 유형" 열이 있다는 점에 유의하세요. 값에 따라 권한 유형을 구분하기 위해 "MENU"는 메뉴에 대한 접근 권한, "OPERATION"은 기능 모듈의 작동 권한, "FILE"은 메뉴 수정 권한을 의미합니다. 파일에서 "ELEMENT"는 페이지 요소 가시성 제어 등에 대한 권한을 의미합니다.

이 디자인에는 두 가지 장점이 있습니다. 첫째, 무엇이 권한 작업인지 리소스인지 구분할 필요가 없습니다(사실 메뉴 등 구별하기 쉽지 않은 경우도 있습니다. 리소스라고 이해해야 할까요, 아니면 기능 모듈 권한으로 이해해야 할까요?). 둘째, 시스템이 새로운 것에 대한 권한을 제어하고 싶을 때 새로운 연관 테이블 "Permission XX Association Table"을 생성하고 해당 권한의 권한 유형 String 을 결정하기만 하면 됩니다.

여기서 주목해야 할 점은 권한 테이블과 권한 메뉴 연관 테이블, 그리고 권한 메뉴 연관 테이블과 메뉴 테이블 사이에는 일대일 관계가 있다는 점이다. (파일, 페이지 권한, 기능적 작업 등에 대해서도 동일하게 적용됩니다.) 즉, 메뉴가 추가될 때마다 이 세 테이블 각각에 동시에 레코드를 삽입해야 합니다. 이렇게 하면 권한 메뉴 연관 테이블이 필요하지 않고 권한 테이블이 메뉴 테이블과 직접 연결됩니다. 이때 메뉴의 권한 ID를 저장하려면 권한 테이블에 열을 추가해야 합니다. 테이블은 "권한 유형"을 전달합니다. 이 ID를 사용하여 해당 테이블이 속한 레코드를 구별합니다.
이 시점에서 RBAC 권한 모델의 확장 모델의 전체 설계 다이어그램은 다음과 같습니다.

시스템이 대형화됨에 따라 관리를 용이하게 하기 위해 역할 그룹을 도입하여 사용자 그룹과 달리 권한 부여에 참여하지 않습니다. 예: 특정 전력망 시스템의 권한 관리 모듈에서 구청에 역할이 걸려 있고, 여기서 구청을 역할 그룹으로 사용할 수 있으며 권한 분배에 참여하지 않습니다. . 또한, 위의 각 메인 테이블의 관리 및 검색을 용이하게 하기 위해 메뉴 트리, 기능 트리 등의 트리 구조를 사용할 수 있다. 물론 이들이 권한 할당에 참여할 필요는 없다.

위는 기본 RBAC 모델에서 확장된 것으로, 구체적인 디자인은 프로젝트 사업의 필요에 따라 조정되어야 합니다.

위 내용은 thinkphp의 RBAC 사용자 권한 관리 데이터베이스 디자인에 대한 자세한 그래픽 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!