첫 번째 질문은 세계 권위가 무엇인지 코드에 던져 질 것입니다?
- 권위 대신 URL
어떻게 액세스 제어를 달성하기 위해?
다음은 제어 흐름의 자세한 사항
간단한 액세스 제어 1.1 - 테이블 구조
简单权限控制,三个model,五张表
권한 테이블 허가
- URL 권한 url 주소를 정규 표현식 ^ $
- 제목 제목
역할 테이블 역할
- 이름 역할 이름
- 권한-many 연관 허용 테이블
사용자 테이블 사용자
- 사용자 이름 사용자 이름
- 암호를 암호
- 둘 다 역할 협회의 역할
관계형 테이블의 역할 및 권한
사용자 및 역할에 대한 관계형 테이블
1.2 메뉴 - 테이블 구조
一级菜单: 在permission表中增加is_menu字段,区别该权限是否是菜单
권한 테이블
URL 권한 url 주소를 정규 표현식 ^ $
제목 제목
메뉴를 is_menu 여부
아이콘 아이콘
1.3 보조 메뉴 - 테이블 구조
二级菜单: 实现二级菜单功能时,需要增加第六张表menu,在权限表中加入外键,关联menu表,有menu_id 当前的权限是二级菜单 没有menu_id 当前的权限是普通的权限
표 메뉴
- 메뉴 제목 이름
- 아이콘 아이콘
권한 테이블
URL 권한 url 주소를 정규 표현식 ^ $
제목 제목
이 현재의 권한 menu_id 메뉴는 현재 한 외래 키 메뉴 메뉴 표에는 권한은 일반 권한을 menu_id 없습니다
두 번째 메뉴 메뉴 종류의 1.4 - 테이블 구조
要对一级菜单排序,在menu中加入weight权重字段
표 메뉴
메뉴 제목 이름
아이콘 아이콘
체중 정수
1.5 비 메뉴 소유권
权限归属,在menu表中加入parent外键,自关联权限表, 有parent_id当前的权限是子权限, 没有parent_id 当前的权限是父权限 ,即二级菜单
권한 테이블
- URL 권한 url 주소를 정규 표현식 ^ $
- 제목 제목
- 외래 키 메뉴 - 현재 테이블과 연관된 메뉴는 권한없는 기관이 일반 권한을 menu_id하지 보조 메뉴가 현재 menu_id있다
- 부모 외래 키 - 관련 권한 테이블 - 자기 상관은 부 전류 권한 권한 권한은 현재 PARENT_ID 권한이 부모 메뉴 아니다 PARENT_ID있다
- 테이블 구조 :
메뉴 메뉴 테이블
- 제목 제목
- 아이콘 아이콘
- 체중 권한
권한 권한 테이블
- URL 권리, URL 경로, 정규식 ^ $
- 제목 제목
- URL 별칭 이름을 만
- 메뉴 외래 키 - 관련 메뉴 목록, 빈 = 사실, 널 (null) = 사실, (사용하여 두 개의 메뉴)
- 이 menu_id되어, 현재의 권한, 보조 메뉴입니다
- 어떤 menu_id 현재 권한은 일반 권한 없다
- 부모 자기 협회는 (비 기득권 메뉴를 사용하는)
- menu_id 아동 권리가있다
- 부모 권한은 PARENT_ID 아니다
- is_menu 부울 값, 메뉴 사용
- 아이콘, 메뉴 사용
- 역할 역할 테이블
- 역할의 이름을 이름,
- 허가-many 연관 허용 테이블
- 사용자의 사용자 테이블
- 사용자 이름 사용자 이름
- 암호를 암호
- 표 role_permission 역할 및 권한
사용자 및 역할 USER_ROLE 표
- 데이터 구조 (공정 기술 점 +)
1. 간단한 액세스 제어
세션에 저장된 성공적으로 착륙 권한 정보 후
권한 데이터 구조
permission_list = [{url},]
미들웨어 -
-(校验成功,return None,校验失败继续执行)
- 현재의 액세스의 URL 경로를 가져옵니다
- 화이트리스트 확인
- 로그인 상태를 확인
- 무료 인증 주소 확인
- 권한을 확인
- sission에서 허가를 받아야
- 자전거 권한, 정규 경기
- 주형
- 마스터 및 상속
2. 동적 메뉴를 생성
성공적으로 sission에 저장하는 사용자 권한 로그
권한 데이터 구조
permission_list=[{url},]
메뉴 데이터 구조
menu_list=[{url:,title:,icon:,},]
미들웨어
校验成功,return None,校验失败继续执行
- 현재의 액세스의 URL 경로를 가져옵니다
- 화이트리스트 확인
- 로그인 상태 확인
- 무료 인증 경로 검증
- 권한을 확인
- 세션에서 허가를 받아야
- 자전거 권한, 정규 경기
석사
- inclusion_tag
- 동적 메뉴 생성
- 정의 inclusion_tag
- 이순신, 순환 men_list에 대해서 가지고 있던 메뉴를 생성
3 개의 메뉴를 동적으로 생성
사용자 권한을 저장하는 성공적인 로그인 세션 후
권한리스트 데이터 구조
permission_list ={{url:,},}
메뉴 사전 데이터 구조
menu_dict={一级菜单ID:{ title: icon: children:[{ url: title: },] },}
미들웨어
- 현재의 액세스의 URL 경로를 가져옵니다
- 화이트리스트 확인
- 로그인 상태 확인
- 무료 인증 경로 검증
- 권한을 확인
- 세션에서 허가를 받아야
- 자전거 권한, 정규 경기
주형
템플릿 및 상속
두 동적으로 생성 된 메뉴
사용자 정의 inclusion_tag
menu_dict.values에 루프에 대한 두 ()
4 개의 메뉴를 동적으로 생성 (메뉴 순서)
sission에서 사용자 권한을 성공적으로 저장 취득에 로그인
권한리스트 데이터 구조
permission_list= [{url},]
메뉴 사전 데이터 구조
menu_dict = {一级菜单的id:{ title: icon: weight: children:[{ url: title: },] },}
미들웨어
- 미들웨어
- 현재의 액세스의 URL 경로를 가져옵니다
- 화이트리스트 확인
- 로그인 상태 확인
- 무료 인증 경로 검증
- 권한을 확인
- 세션에서 허가를 받아야
- 자전거 권한, 정규 경기
- 미들웨어
주형
마스터 및 상속
두 번째 수준의 메뉴와 메뉴 순서를 생성
- 사용자 정의 inclusion_tag
분류의 menu_diact 사전 종류, 주문한 사전 OD에 추가
두 루프, 반환) (사전 od.values를 주문
두 메뉴를 동적으로 생성 (제 메뉴가 디폴트로 선택되어, 확장)
사용자 권한을 저장하는 성공적인 로그인 세션 후
권한리스트 데이터 구조
permission_list = [{url}]
메뉴 사전 데이터 구조
menu_dict= {一级菜单id:{ title: icon: weight: children:[{ url: title: },] },}
미들웨어
- 현재의 액세스 경로의 URL 주소를 가져옵니다
- 화이트리스트 확인
- 상태 검사 로그인
- 인증없는 주소 확인
- 권한을 확인
- 세션에서 허가를 받아야
- 자전거 권한, 정규 경기
- 주형
- 마스터 및 상속
- 두 동적 메뉴를 생성 및 정렬, 확장
- 사용자 정의 inclusion_tag
- 현재 URL을 가져옵니다
- 분류의 menu_diact 사전 종류, 주문한 사전 OD에 추가
- 메뉴 추가 클래스를 순환 = '숨기기'
- 순환 보조 메뉴, 일반 일치하는 URL, 매칭이 성공하면
- 보조 메뉴 플러스 클래스 = '활성화'
- 메뉴 클래스 = ''
- 루프 두) (사전 od.values을 주문 돌려주는
6.이 동적으로 생성 된 메뉴 (비 허가 홈 메뉴에서 두 개의 하위 메뉴 확대 권리)
사용자 권한을 저장하는 성공적인 로그인 세션 후
권한리스트 데이터 구조
permission_list = [{ url: id: pid: },]
메뉴 사전 데이터 구조
menu_dict = {一级菜单id:{ title: icon: weight: children:[{ url: title: id: },] },}
미들웨어
- 현재의 액세스의 URL 경로를 가져옵니다
- 화이트리스트 확인
- 없음 = request.current_menu_id 인덱스 어드레스에 액세스 --- 무료 인증 모든 보조 메뉴가 닫혀 있는지 없도록
- 로그인 상태를 확인
- 무료 보증 수표
- 권한을 확인
- sission이 취소 허가를 얻
- 자전거 권한, 정규 경기
- 가져 오기 사용 권한 목록 ID와 PID
- PID가 존재하지 않을 경우, 현재 사용 권한은 보조 메뉴, 패키지, ID로 요청 ID = request.current_menu_id입니다 --current 전류 -
- PID가 존재하면, 현재의 허가 보조 메뉴 PID를 식별 패키지, 즉 requst하는 헤드셋 메뉴 request.current_menu_id = PID이며
주형
마스터 및 상속
2 차 메뉴를 생성 보조 메뉴가 아동의 권리를 확장 선택
- 사용자 정의 inclussion_tag
- 현재 URL을 가져옵니다
- 메뉴 레벨의 정렬 종류, 주문한 사전 OD에 추가
- 메뉴 추가 클래스를 순환 = '숨기기'
- 환상 부 메뉴, 메뉴 결정이 두 개의 아이디가 동일 request.current_menu_id
- 두개의 메뉴가 동일 클래스에 첨가 = 숨기기 삭제 '활성'메뉴 클래스 클래스 = '
- od.values를 반환하는 루프에 대한 두 ()
7. 경로 탐색
성공적으로 sission에 저장하는 사용자 권한 로그
권한 사전 데이터 구조
permission_dict ={权限id:{ # 可以根据子权限的pid获取父权限的字典 url:, id:, pid:, title:, },}
메뉴 사전 데이터 구조
menu_dict = {一级菜单id:{ title: icon: weight: children:[{ url: title: id: },] },}
- 미들웨어
- 현재의 액세스의 URL 경로를 가져옵니다
- 화이트리스트 확인
- 없음 = request.current_menu_id 인덱스 어드레스에 액세스 --- 무료 인증 모든 보조 메뉴가 닫혀 있는지 없도록
- request.breadcrumb_list = [{ '제목': '홈', 'URL': '/ 지수 /'}] --- 탐색 경로 무료 추가 인증 정보
- 로그인 상태 확인
- 인증없는 주소 확인
- 권한을 확인
- sission에서 허가를 받아야
- 자전거 권한 permissions_dict.vlaues, 정규 경기
- 가져 ID와 PID
- PID가 보조 메뉴가 존재하지 않는 경우,
- ID = request.current_menu_id
- 두 개의 메뉴 정보 --request.breadcurmb_list.append 캡슐화 ({ '제목'I [ '제목', 'URL'I [ 'URL']})
- PID 경우, 아동의 권리 존재
- 상위의 권한 p_permissions = permissions_dict [STR ( '딕셔너리')]
- PID = request.current_menu_id
- 두 개의 메뉴 정보 --request.breadcurmb_list.append 캡슐화 ({ '제목'p_permissions [ '제목', 'URL'p_permissions [ 'URL']})
- 권한 서브 메뉴 정보 패키지 --request.breadcurmb_list.append ({ '제목'I [ '제목', 'URL'I [ 'URL']})
- PID가 보조 메뉴가 존재하지 않는 경우,
주형
마스터 및 상속
2 차 메뉴를 생성 보조 메뉴가 아동의 권리를 확장 선택
- 사용자 정의 inclussion_tag
- 현재 URL을 가져옵니다
- 메뉴 레벨의 정렬 종류, 주문한 사전 OD에 추가
- 메뉴 추가 클래스를 순환 = '숨기기'
- 환상 부 메뉴, 메뉴 결정이 두 개의 아이디가 동일 request.current_menu_id
- 두개의 메뉴가 동일 클래스에 첨가 = 숨기기 삭제 '활성'메뉴 클래스 클래스 = '
- od.values를 반환하는 루프에 대한 두 ()
- 빵 부스러기
- 사용자 정의 inclusion_tag
- 获取 breadcurmb_list = request.breadcrumb_list
- 루프 request.breadcrumb_list에 대한 하나의
버튼 8. 레벨 액세스 제어
세션에 성공적으로 로그인 한 후 사용자 권한을 저장
권한 사전 데이터 구조
permisssions_dict={url别名:{ url: id: pid: pname: },}
메뉴 사전 데이터 구조
menu_dict = {一级菜单id:{ title: icon: weight: children:[{ url: title: id: },] },}
미들웨어
현재의 액세스의 URL 경로를 가져옵니다
- 화이트리스트 확인
- request.current_menu_id = 없음
- request.breadcrumb_list = [{ '획' '主页', 'URL' '/ 색인 /'}]
- 로그인 상태 확인
- sission에서 허가를 받아야
- 자전거 권한 permissions_dict.vlaues, 정규 경기
- 가져 ID와 PID
- PID가 존재하지 않는 경우, 현재의 URL를 보조 메뉴입니다
- ID = request.current_menu_id
- request.breadcrumb_list.append ({ '제목'I [ '제목', 'URL'I [ 'URL']})
- PID가있는 경우, 현재의 URL를 아동 권리입니다
- 상위 저작권을 획득 (2 단째) 정보 p_permissions permissions_dict = [I [ 'PNAME']
- PID = request.current_menu_id
- request.breadcrumb_list.append ({ '제목'p_permissions [ '제목', 'URL'p_permissions [ 'URL']})
- request.breadcrumb_list.append ({ '제목'I [ '제목', 'URL'I [ 'URL']})
- PID가 존재하지 않는 경우, 현재의 URL를 보조 메뉴입니다
주형
마스터 및 상속
두 번째 수준의 메뉴 / 메뉴를 생성하면 홈 메뉴로 정렬 / 비 권한, 권한을 확장하는 두 개의 하위 메뉴를 선택
- 사용자 정의 inclussion_tag
- 현재 URL을 가져옵니다
- 메뉴 레벨의 정렬 종류, 주문한 사전 OD에 추가
- 메뉴 추가 클래스를 순환 = '숨기기'
- 환상 부 메뉴, 메뉴 결정이 두 개의 아이디가 동일 request.current_menu_id
- 두개의 메뉴가 동일 클래스에 첨가 = 숨기기 삭제 '활성'메뉴 클래스 클래스 = '
- od.values를 반환하는 루프에 대한 두 ()
빵 부스러기
- 사용자 정의 inclusion_tag
- 获取 breadcurmb_list = request.breadcrumb_list
- 루프 request.breadcrumb_list에 대한 하나의
버튼에 대한 액세스 제어
- 사용자 정의 필터 --has_permission
- permission_dict에서 프런트 엔드 이름에 패스를 분석,
- True를 반환있다
- 더 리턴 거짓이 없다
- 판사 {% 경우 요청 | has_permission : 이름 %} html 파일 님 {% endif %}에서