-
[Django] Permission_classes 사용하여 인증하기 (feat.DRF)파이썬/Django 2023. 1. 16. 10:09728x90반응형
Permission_classes란
사용법
from rest_framework.permissions import IsAuthenticatedOrReadOnly
class PhotoDetail(APIView): permission_classes = [IsAuthenticated]
원하는 클래스에 위의 코드를 작성해주면 끝이다.
Authentication
인증의 종류
지원하는 인증의 종류는 총 4가지가 있습니다.
- SessionAuthentication
- 세션을 통한 인증 여부 체크
- APIView를 통해 디폴트 지정 (우선순위 1)
- BasicAuthentication
- Basic 인증헤더를 통한 인증 수행
- ex) Authorization: Basic YWxsaWV1czE6MTAyOXNoYWtl
- APIView를 통해 디폴트 지정 (우선순위 2)
- TokenAuthentication
- Token 헤더를 통한 인증 수행
- ex) Authorization: Token 401f7ac837da42b97f613d789819ff93537bee6a
- RemoteUserAuthentication
- User 정보가 다른 서비스에서 관리될 때, Remote 인증 (장고 공식문서)
- Remote-User 헤더를 통한 인증 수행
Permission
django 에서의 권한
django 는 기본적인 권한들을 제공해주고 있습니다.
- is_superuser
- createsuper 로 생성한 user 에 대해 True
- True일 경우 별도 permission 없이 모든 권한 허용
- is_staff
- True 일 경우 admin 페이지 접속가능
- 나머지는 일반 유저와 동일
- is_active
- False 일 경우 모든 권한 불허
- 로그인도 불가능
DRF 에서 기본제공하는 Permission 은 다음과 같습니다.
- AllowAny : 인증여부에 상관없이 뷰 호출 허용 (default)
- IsAuthenticated : 인증된 요청에 한해서 뷰호출 허용
- IsAdminUser : Staff 인증 요청에 한해서 뷰호출 허용
- IsAuthenticatedOrReadOnly : 비인증 요청에게는 읽기 권한만 허용
- DjangoModelPermissions : 인증된 요청에 한해서만 뷰 호출 허용, 추가로 유저별 인증 권한체크를 수행
- DjangoModelPermissionsOrAnonReadOnly : DjangoModelPermissions 와 유사하나 비인증 요청에 대해서는 읽기 권한만 허용
- DjangoObjectPermissions
- 비인증된 요청 거부
- 인증된 레코드 접근에 대한 권한체크를 추가로 수행
LIST'파이썬 > Django' 카테고리의 다른 글
[Django] 인증 Authentication (0) 2023.01.23 [Django] user api (get, put) 만들기 (0) 2023.01.17 [Django] APIView로 api 만들기 (0) 2023.01.13 [Django] Model View Sets 사용하기 (0) 2023.01.12 [Django] APIView를 이용한 views.py 리팩토링 1 (0) 2023.01.11 - SessionAuthentication