현재 진행중인 프로젝트는 웹 응용 프로그램으로, 자체 서버의 여러 고객에게 제공해야합니다. 이 웹 사이트에는 사용자가 사용할 수 있거나 사용할 수없는 영역과 기능을 관리하는 권한 제어 시스템이 필요합니다.
알다시피, 데이터베이스에 저장된 사용 권한 시스템을 사용하여 데이터베이스 기반의 사용 권한 시스템을 설계하고 있습니다. 모든 사용자에게 역할이 있습니다. 역할은 사용 가능한 목록 사용 권한을 정의합니다. 스키마는 다음과 같습니다웹 사이트 권한 시스템에 대한 모범 사례
사용자 테이블
1 USER_ID
2. 이름
3.
역할 ROLE_ID
1. 테이블을 ROLE_ID
2. 이름
허가 표
1. permission_id
2. 이름
roles_permissions 테이블 :
1.
2. I 사용자 역할과 권한을 로그인을 불러오는 것 코드에서
을 permission_id ROLE_ID, 사용자가 있는지 확인 행동을 수행하거나 그렇게 볼 수있는 영역 :
if($user->hasPermission('Edit HR')) {
// let user see the editing HR section
}
hasPermission은 사용자에게 다음과 같은 권한이 있는지 확인합니다. 이름 'Edit HR'을 입력하고 필요한 결과를 반환합니다. 내가 보는 문제는 데이터베이스 테이블에 'Edit_hr'또는 'HR Editing'이 아닌 'Edit HR'이라는 이름의 권한 레코드가 있어야한다는 것입니다. 따라서 사용 권한 시스템의 데이터가 응용 프로그램이 사용하는 모든 데이터베이스에 대해 동일한 지 확인해야합니다. 어떤 종류의 결함이 있다고 생각하니 다시 설계해야합니다. 새 섹션 및 기능을 만들면 모든 데이터베이스를 업데이트해야하므로 나도 슬픈 팬더가됩니다.
기본적으로 질문은 다음과 같습니다. 데이터베이스 기반 권한 시스템을 설계하고 여러 데이터베이스에서 데이터베이스 무결성을 유지하는 가장 좋은 방법은 무엇입니까?
나는 테이블'role','resource', 그리고'permission' 부를 것이다, 디자인을 명확히합니다. 권한 테이블은 role_id'와'resource_id''에 외부 키를 포함 할 것, 어떤 항목이 존재하는 경우는 그 역할이 해당 자원에 연결되어 알고있다. 이미 FK의 이름을'[표] _id'이 있기 때문에 또한, 나는 각 PK'id'을 부를 것이다. – Xeoncross
사용자는 하나 개의 역할을 할 수 있습니까? 한 범주의 편집자이자 다른 범주의 검토자인 사람은 어떻습니까? :) –
이것은 좋은 문제는 당신이 역할, 프로세스 및 사용자가 하나의 사용자 또는 사용자 그룹에 더 많은 권한을 추가하거나 한 사용자로부터 만 permiss를 제외해야 할 경우 설명이 필요하다면이 스키마를 얻으시겠습니까 inted : http://stackoverflow.com/questions/37466333/php-mysql-sesion-good-practice-user-management-and-permissions –