Custom Permission Class

사용자 정의 Permission Class
Posted on 2021-08-30 by GKSRUDTN99
Django Rest Framework DRF Permission Class

Permisssion Class에 대하여

has_permission(self, request, view)는 해당 View 자체에 접근할 권한을 설정한다. has_object_permission(self, request, view, obj)는 해당 View에서 특정 객체에 접근할 권한을 설정한다.


Custom Permission Class 정의하기.

  1. from rest_framework import permissions를 임포트한다.
  2. permissions.BasePermission을 확장하는 클래스를 정의한다.
  3. 위의 두 함수를 override하여 구현한다.

Custom Permission Class 예시

해당 객체에 소유자만 CRUD가 모두 가능하고, 나머지는 Read만 가능하도록 하고 싶다면, IsOwnerOrReadOnly 클래스를 다음과 같이 정의할 수 있다.

    class IsOwnerOrReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        else:
            return obj.user == request.user