본문 바로가기
코딩공부/Django

DRF Permission으로 사용자의 접근 제어

by Dong_Devlog 2022. 11. 14.

DRF Permission 설명

permission은 현재 요청에 대한 허용/거부를 결정하며 APIView 단위로 지정이 가능하다. 즉, 앱의 각 기능마다 해당 유저가 로그인을 한 사용자인지 등을 확인하여 권한을 부여할 수 있게 된다.

 

Permission 종류

  • AllowAny : 인증 여부에 상관없이 뷰 호출 허용
  • IsAuthenticated : 인증된 요청(등록된 사용자)에 한해서, 뷰 호출 허용
  • IsAdminUser : Staff User의 요청만 View 호출을 허용
  • IsAuthenticatedOrReadOnly : 인증된 요청은 View 호출을 허용하고, 비 인증된 요청은 안전한 읽기/조회만 허용

이렇게 4가지 permission가 있으며, 전역 설정과 단일 모델 설정이 각각 가능하다.

 

Permission 전역 설정

전역 설정은 settings.py에 REST_FRAMEWORK 딕셔너리에 다음과 같이 추가하면 되고 사용 할 permission을 'rest_framework.permissions.()' 소괄호 자리에 넣어주면 된다.

 

즉, 아래와 같이 설정하면 무제한 액세스를 허용하게 된다.

# settings.py

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny ',
    ]
}

 

Permission 각 APIView 별 설정

rest_framework.permissions에서 원하는 permission을 import 하고 permission_classes에 사용할 permission을 리스트 안에 넣어 설정해 주면 된다.

 

즉, 아래와 같이 설정하면 ExampleView 클래스의 API는 인증된 사용자만 사용할 수 있도록 설정하게 된다.

# views.py

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

class ExampleView(APIView):
    permission_classes = [IsAuthenticated]

댓글