ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Django] Permission_classes 사용하여 인증하기 (feat.DRF)
    파이썬/Django 2023. 1. 16. 10:09
    728x90
    반응형

    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
Designed by Tistory.