rest_framework 학습의 인증(Authentication) & 권한(Permissions)
2960 단어 django
개술
우리는django에서 내장된 인증과 권한 방식을 제공하고 몇 장의 데이터베이스 테이블(예를 들어auth user,auth group,auth permission 등)을 유지하며 봉인된 방법(예를 들어authenticate(),login(),logout())을 제공하여 인증과 권한을 실현하는 것을 알고 있다.
rest_프레임워크 인증 및 권한
restframework의 APIView 베이스 클래스에서는 다음과 같이 인증 및 권한이 고급 패키지로 제공됩니다.
class APIView(View):
# The following policies may be set at either globally, or per-view.
authentication_classes = api_settings.DEFAULT_AUTHENTICATION_CLASSES
permission_classes = api_settings.DEFAULT_PERMISSION_CLASSES
authentication_classes는 인증 속성입니다. 기본적으로settings를 읽습니다.py의 DEFAULTAUTHENTICATION_CLASSES
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
)
}
permission_classes는 권한 속성입니다. 기본적으로settings를 읽습니다.py의 DEFAULTPERMISSION_CLASSES
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
물론 클래스에서 다음과 같은 인증 및 권한 방법을 지정할 수도 있습니다.
from rest_framework.views import APIView
from rest_framework.authentication import TokenAuthentication, BasicAuthentication, SessionAuthentication
from rest_framework.permissions import IsAuthenticated, IsAdminUser, IsAuthenticatedOrReadOnly, AllowAny
class TestView(APIView):
authentication_classes = (BasicAuthentication, )
permission_classes = [IsAuthenticated]
def get(self, request):
print("++++++++++++++++", request.user)
print(request.auth)
return Response({"data": "hahah"})
DRF는 요청 인증이 성공하면 요청 개체 Request에서 Request를 설정합니다.사용자 및 Request.auth 속성, 일반 Request.user는django 사용자 실례,request.auth는 None 또는 인증에 첨부된 값 (예를 들어 Token 인증의 Token 값) 이며 인증이 실패하면 DRF는 기본적으로 Request를 설정합니다.user는 django입니다.contrib.auth.models.AnonymousUser 인스턴스, request.auth 기본값은 None 입니다.
인증 방법
DRF는 다음과 같은 몇 가지 일반적인 인증 방식을 제공한다. 1. BasicAuthentication, 사용자 이름 비밀번호 인증 방식
2. SessionAuthentication, Session 인증 방식 기반
3. Token Authentication은 영패 인증 방식을 바탕으로 한다. (한 사용자가 영패를 연결하고 요청할 때마다 요청 헤더에 추가한다.
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
)
사용 권한
DRF는 다음과 같은 일반적인 권한을 제공합니다.
IsAuthenticated, 인증 통과
IsAdminUser, 관리자 권한
IsAuthenticatedOrReadOnly,
AllowAny, 인증 필요 없음(기본값)
총결산
DRF의 인증과 권한의 결합은 비교적 밀접하다. 인증만 권한 제어가 없으면 효력이 발생하지 않는다. 예를 들어 authentication만 설정한다classes permission을 설정하지 않음classes, 이 점을 명심해라!
또한 인증과 권한은 사용자 정의로 실현할 수 있으며 각각 BaseAuthentication 기초 인증 클래스, BasePermission 기초 권한 클래스를 계승하면 자신이 원하는 모든 권한 제어에 도달할 수 있다.
링크 첨부:
https://www.django-rest-framework.org/api-guide/authentication/
https://www.django-rest-framework.org/api-guide/permissions/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.