# 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 방식에 따라 다음과 같이 부분에 해당하는 권한을 설정해줄 수 있다.
is_staff = True
인 유저의 요청에만 액세스를 허용한다. GET
, HEAD
, OPTIONS
요청만 허용한다.DjangoModelPermissions
과 유사하나 유저가 인증되지 않은 경우는 GET
, HEAD
, OPTIONS
요청만 허용한다.has_permission(self,request,view)