[Python 학습] Django 권한 제어
주요 내용
권한 관리란?웹 사용 권한 Django 사용 권한 메커니즘 Django의 사용 권한 항목 사용 권한 적용
권한 관리, 일반적으로 시스템이 설정한 안전 규칙이나 안전 정책에 따라 사용자가 접근할 수 있고 자신이 권한을 부여받은 자원만 접근할 수 있음을 가리킨다
권한 관리가 잘 되어 있다. 예를 들어 열쇠가 있으면 문을 열 수 있지만 권한 설정은 등급의 구분이 있다. 만약에 이 시스템에 여러 개의 권한 등급이 한 방에 여러 개의 문이 있는 것처럼 모든 문을 열려면 모든 열쇠를 가져야 한다. 시스템과 같다.
웹 사용 권한
웹에서 권한 관리는 웹 응용 프로젝트에서 비교적 중요한 부분이다. 브라우저는 모든 컴퓨터가 이미 갖추고 있기 때문에 권한 관리 시스템을 구축하지 않으면'불법 사용자'는 브라우저를 통해 웹 응용 프로젝트의 모든 기능을 쉽게 접근할 수 있다.따라서 권한 관리 시스템이 권한 검사를 실시하여 권한을 수여받은 사용자가 권한이 부여된 기능을 정상적이고 합법적으로 사용할 수 있도록 하고 권한을 부여받지 않은 불법 사용자를 거부해야 한다.좋은 권한 관리 시스템은 모든 종류나 사용자에 대해 서로 다른 시스템 조작 권한을 분배하고 확장성을 가져야 한다. 즉, 권한 관리가 있는 웹 응용 프로젝트에 가입할 수 있고 구성 요소처럼 중복 사용될 수 있다.또한 개발자에게 웹 응용 프로젝트를 개발할 때 가능한 한 전체 시스템을 세분화하고 몇몇 하위 모듈로 분해하여 완전한 응용으로 조합해야 한다고 일깨워 주어야 한다.오직 이렇게 해야만 모든 종류나 모든 사용자에게 서로 다른 조작 권한을 분배할 수 있다.
Django 권한 메커니즘
Django 권한 메커니즘은 사용자의 행위를 제약하고 페이지의 표시 내용을 제어할 수 있으며 API를 더욱 안전하고 유연하게 할 수 있다.권한 메커니즘을 잘 사용하면 시스템을 더욱 강대하고 건장하게 할 수 있다
Django는user,group,permission으로 권한 메커니즘을 완성했습니다. 이 권한 메커니즘은 모델에 속하는permission을user나group에 부여하여 전역적인 권한으로 이해할 수 있습니다. 즉, 사용자 A가 데이터 모델(모델) B에 쓰기 가능한 권한이 있으면 A는 모델 B의 모든 실례(objects)를 수정할 수 있습니다.그룹의 권한도 마찬가지입니다. 그룹 C에 모델 B에 쓰기 가능한 권한을 부여하면 그룹 C에 속하는 모든 사용자가 모델 B의 모든 실례를 수정할 수 있습니다.
Django의 사용 권한 항목
Django는permission 대상으로 권한 항목을 저장합니다. 모델마다 기본적으로 세 개의permission, 즉add 모델,change 모델,delete 모델이 있습니다
permission은 항상 모델과 대응합니다. 만약 Object가 모델의 실례가 아니라면, 권한을 만들거나 분배할 수 없습니다.
사용 권한 적용
class Server(models.Model):
...
class Meta:
permissions = (
("view_server", "can view server"),
("change_server_status", "Can change the status of server"),
)
◆Permission(2)
모든 permission은 django입니다.contrib.auth.Permission 유형의 실례, 이 유형은 세 개의 필드name, codename 및 contenttype, content_type은permission이 어느 모델에 속하는지 반응하고 코드name은 위의view서버, 코드 논리에서 권한을 검사할 때 사용합니다.name은permission의 설명입니다.permission을 화면이나 페이지에 출력할 때 기본적으로name◆User Permission 관리(一)User 대상의userpermission 필드에서 사용자를 관리하는 권한user = User.objects.get(username="rock") user.user_permissions = [permission_list] user.user_permissions.add (permission, permission,...) # 권한이 추가되었습니다user.user_permissions.remove(permission,permission,...) # 삭제 권한user.user_permissions.clear () # 사용 권한 비우기: 위의 permission은 django입니다.contrib.auth.Permission 유형의 인스턴스
# :
In [3]: from django.contrib.auth.models import User #
In [6]: user = User.objects.get(username="nick") #
In [7]: user.user_permissions.all() #
Out[7]: []
In [8]: from django.contrib.auth.models import Permission #
In [10]: Permission.objects.get(pk=43) #
Out[10]:
In [11]: Permission.objects.filter(pk=43) # ( )
Out[11]: []
In [12]: user.user_permissions = Permission.objects.filter(pk=43) # ( )
In [13]: user.user_permissions.all() #
Out[13]: []
In [18]: user.user_permissions.add(Permission.objects.get(pk=43)) #add ( Permission , )
In [40]: user.user_permissions.all()
Out[40]: [, ]
In [41]: user.user_permissions.remove(Permission.objects.get(pk=43)) #remove ( Permission , )
In [42]: user.user_permissions.all()
Out[42]: []
◆ User Permission 관리(二)
myuser.has_perm(’dashboard.view_server')
has_perm () 방법의 매개 변수, 즉permission의codename이지만 매개 변수를 전달할 때 모델이 속한 app의 접두사를 붙여야 합니다. permission이user에게 부여되든 그룹이든hasperm () 방법 모두 적용
user.get_all_permissions()
user.get_group_permissions()
◆ Group Permission 관리 group permission 관리 논리는user permission 관리와 일치하며, group에서는 permissions 필드를 사용하여 권한 관리를 한다: group.permissions = [permission_list] group.permissions.add(permission, permission, …) group.permissions.remove(permission, permission, …) group.permissions.clear()
◆권한 검증(一)뷰에서 권한 검증-permissionrequired는 업무 논리에서 권한 검사와 관련이 있을 때 decorator는 권한 검증과 핵심적인 업무 논리를 분리하여 코드를 더욱 간결하고 명확하게 할 수 있다.permission의 decorator는 permissionrequired
from django.contrib.auth.decorators import permission_required
@permission_required(’dashboard.view_server')
def my_view(request):
...
◆권한 검증(二)
클래스 뷰에서 유효성 검사
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required, permission_required
class ServerView(TemplateView):
@method_decorator(login_required)
@method_decorator(permission_required(“dashboard.view_server”)
def get(self, request, *args, **kwargs):
……
◆권한 검증(3)
views에서 검증
if not request.user.has_perm(’dashboard.view_server')
return HttpResponse('Forbidden')
◆권한 검증(4)
Template의 권한 검사
{% if perms.dashboard.view_server %}
{% endif %}
◆확장된 읽기:
Django 인증 시스템 사용:http://python.usyiyi.cn/translate/django_182/topics/auth/default.html
파이썬 실전반 16기 핫 접수 진행 중
학생 모집 요구:
개발이나 운영 개발 방향으로 발전하고 싶다면 파이톤의 기초는 0이나 약하지만 셸이나 다른 어떤 언어도 읽을 수 있는 학생이다.
수업 내용:
◆ 씬 버전 CMDB
1. html+css+js 다양한 전단 기술 결합
2. aax 비동기 요청 조작
3. 페이지별 검색 기능
4. 흔한 데이터베이스 디자인 원칙, CMDB 표 구조 실전, Mysql 실조
5. 프로젝트를 독립적으로 완성하고 완전한 웹(LAMP) 구조를 이해한다.
◆ Nginx 로그 통계 분석과 다차원 시각화
1. Python으로 Nginx 로그 파일을 처리하여 다차원 데이터 통계 분석을 한다.
2. IP, 방문 주소와 방문 상태 등 데이터 통계에 따라 통계 결과를 데이터베이스에 저장
3. Highcharts 등 유행 전단 기술의 다차원, 분석 결과를 가시화
◆실용 모니터링 시스템 신속 구축
1. Python은 기기의 실시간 사용 데이터를 읽고 Http 요청을 통해 데이터를 입고합니다
2. 설계 데이터가 입고된 API로 서로 다른 기계의 데이터를 수집한다.
3. 전방에서 메모리 데이터를 읽고 접선도를 시각적으로 보여준다.
4. 프로젝트를 독립적으로 완성하고 파이톤이 자주 사용하는 시간 등 모듈을 파악한다.
문의 신청 연락처: QQ(1): 979950755 소월 QQ(2): 279312229 ada WeChat: 1902433859 소월 WeChat: 1251743084 주문서
개강시간:9월9일
과정 개요:http://51reboot.com/course/actual/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.