TIL: [django] drf permissions

Django Rest Framework

Custom Permissions

drf - generics으로 permissions를 사용하여 superuser일 경우만 조회 권한을 주는 기능을 구현하였다.

참고 : http://www.django-rest-framework.org/api-guide/permissions/

class IsOwnerOrReadOnly(permissions.BasePermission): def has_permission(self, request, view): ip_addr = request.META[‘REMOTE_ADDR’] blacklisted = Blacklist.objects.filter(ip_addr=ip_addr).exists() return not blacklisted

def has_object_permission(self, request, view, obj): if request.method in permissions.SAFE_METHODS): return true return obj.owner == request.user ```

  • has_permission(self, request, view) : obj와는 관계 없이 has_permission 내의 조건이 true일 경우에만 허용하게 하는 기능
  • has_object_permission(self, request, view, obj) : obj가 접근 권한이 있는지 없는지 검사 후 권한을 부여

이것만 봐서는 이해가 잘 되지않아서 ctrl+클릭으로 다른 isAdminUser 같은 예를 참고하여 작성하였다