RBAC 자세한 thinkphp

출처: 인터넷
작성자: 사용자
키워드: rbac thinkphp

최근 만든 thinkphp 프로젝트, 고객 오늘 제안 했다 새로운 요청 관리자 http://www.aliyun.com/zixun/aggregation/18083.html "> 권한 관리." 이전 RBAC의 도입의 본된 thinkphp 않았다 하지 공부 신중 하 게, 지금 나중 잊지 않도록 기억, RBAC의 나의 이해에 있는 장소를 찾아야 하는 데 사용 합니다.

6184.html을 살펴 봅시다 "> 데이터 시트" 공식 예제로 사용.

RBAC를 사용 하 여 5 데이터 시트

Think_user (사용자 테이블)

Think_role (사용자 그룹 테이블)

Think_node (작업 노드)

Think_role_user (사용자 및 사용자 그룹에 해당)

Think_access (각 작업 및 사용자 그룹에 해당)

여기에 포인트, Think_note입니다.

Think_note 실제로 프로젝트 모듈 이름 및 작업 이름에 해당 하는 전체 웹 사이트의 기록 이다.

필드 이름은 프로젝트, 모듈, 또는 작업의 이름이입니다.

필드 PID 레코드의 종속성, 모듈에는 프로젝트에, 속한다 등은 모듈 작업에 속한다.

필드의 수준을 즉 노드 계층 구조 수준을 말 하려면 = 프로젝트에 대 한 1, 레벨 2는 모듈에 대 한 =, 레벨 = 3은 작업 관리자 프로젝트와 같은 그의 PID가 0 (프로젝트 PID가 0) 레벨 1, nane 관리자, 광고 민 프로젝트 사용자 모듈 아래 2의 수준 이어야 한다 pid 관리자 ID, 관리자 사용자 모듈 아래 추가 작업, 수준 3 이어야 한다, PID 이전 사용자 해당 ID 이어야 한다

다시 RBAC 클래스의 메서드

인증 ($map, $model = ') 방법 들어오는 쿼리 사용자의 상태 및 사용자 테이블의 모델은 사용자의 정보를 포함 하는 배열 반환

Saveaccesslist ($authId = null) 방법 들어오는 사용자 ID이이 메서드는 값을 반환 하지 않습니다 하지만 $_session ['_access_list', 그 사용자 $_에 해당 하는 모든 사용자 그룹에 대 한 사용 권한 작업 하는 모든 노드가 포함 되어 있는 값을 설정 합니다 세션 [' _access_list ' [' 프로젝트 이름 ']] [' 모듈 이름 '] [' 작업 이름 '], 나중에 판사 권위 $_session에서 현재 프로젝트, 모듈 및 운영을 판단 하는 [' _access_list '] 찾을 수 있습니다. S

CheckAccess () 메서드는 현재 모듈 및 작업 반환 bool 형식의 유효성만 검사할 필요가 여부 감지

Checklogin () 메서드는 검색 로그인

Accessdecision ($appName app_name =) 방법은 현재 프로젝트 모듈 작업 $_session 인지 감지 하 [' _access_list ' 배열 하는, 즉,에 $_session [' _access_list '] 배열 $_session [' _access_list ' [' 현재 작업 '] [' 현재 모듈 '] [' 현재 작업 '] 존재. 사용 권한 표시 경우 flase를 반환 합니다.

Getaccesslist ($authId) 메서드는의 값을 반환 $_session [' _access_list ' 권한의 목록에 대 한 데이터베이스를 쿼리하여.

위의 레코드는 RBAC의 나의 개인적인 이해. 개발의 과정에서 문제가 발생, 나는 하나의 프로젝트, 하지만 여러 모듈 관리를 분리 하 고 싶습니다. 오랜 동안 생각 발견 Accessdecision ($appName app_name =)은 프로젝트의 이름을 전달할 수 있습니다. 그럼 우리 처음으로 나눌 것 입 몇 가지 그룹, 즉, 수준 1, pid = = 0, 그리고 모듈 그룹 관리. 그것은 사용 하는 번거로움의 비트입니다. 각 그룹은 내장 기본 클래스에서 기본 클래스와 경우 (! Rbac::accessdecision ()) {현재 그룹의 이름인 Accessdecision를 매개 변수를 수동으로 추가 합니다. 기본 클래스는 다음 그룹에 속한 모듈에 의해 참조 됩니다. 이 같은 프로젝트에서 그룹화 관리 모듈의 기능을 달성 한다.

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.