[DRF] 권한 (Permissions)

JinUk Lee·2023년 1월 25일
0

DRF 학습하기

목록 보기
11/57
post-custom-banner

권한 설정 방법 (전역)

# settings.py
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated', ## <<-- 여기에 넣는다
    ]
}

settins.py 에 해당 설정을 하면 프로젝트 전역에 대한 권한 정책이 설정된다.

만약 해당 설정을 지정하지 않으면 기본적으로 rest_framework.permissions.AllowAny (누구나 허용)이다.

권한 설정 방법 (부분)

from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView

class ExampleView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request, format=None):
        content = {
            'status': 'request was permitted'
        }
        return Response(content)
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response

@api_view(['GET'])
@permission_classes([IsAuthenticated])
def example_view(request, format=None):
    content = {
        'status': 'request was permitted'
    }
    return Response(content)

permission_classes = [IsAuthenticated]

@permission_classes([IsAuthenticated])

CBV, FBV 방식에 따라 다음과 같이 부분에 해당하는 권한을 설정해줄 수 있다.

권한 종류

  • AllowAny - 무제한 액세스를 허용한다. (기본값)
  • IsAuthenticated - 인증된 유저의 요청에만 액세스를 허용한다 (로그인 유무)
  • IsAdminUser - is_staff = True 인 유저의 요청에만 액세스를 허용한다.
  • IsAuthenticatedorReadOnly - 인증된 유저가 아닌 경우에는 GET, HEAD, OPTIONS 요청만 허용한다.
  • DjangoModelPermissions - 유저가 인증되고, 관련 모델에 권한이 있는 경우에만 액세스를 허용한다.
  • DjangoModelPermissionsorAnonReadOnly - DjangoModelPermissions 과 유사하나 유저가 인증되지 않은 경우는 GET, HEAD, OPTIONS 요청만 허용한다.
  • DjangoObjectPermissions - 모델에 대해 객체 별 권한을 설정하여 유저가 인증되고, 관련 모델과 객체에 권한이 있는 경우에만 액세스를 허용한다.
  • Custom Permissions - 개발자가 권한 조건을 커스텀하는 경우다.

Custom Permissions

  • has_permission(self,request,view)
profile
개발자 지망생
post-custom-banner

0개의 댓글