2017-02-22 3 views
2

개체 수준 권한

http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/#object-level-permissions장고 : 개체 수준 권한 DRY

class IsOwnerOrReadOnly(permissions.BasePermission): 
    """ 
    Custom permission to only allow owners of an object to edit it. 
    """ 

    def has_object_permission(self, request, view, obj): 
     # Read permissions are allowed to any request, 
     # so we'll always allow GET, HEAD or OPTIONS requests. 
     if request.method in permissions.SAFE_METHODS: 
      return True 

     # Write permissions are only allowed to the owner of the snippet. 
     return obj.owner == request.user 

내 필요성 : 모든 검색어 세트는 사용자가 나는 장고-ORM의 검색어를 할

편집 할 수있는 객체 주어진 사용자가 편집 할 수있는 모든 객체를 포함합니다.

은 내가

하지

하지만 그건 DRY DRY 아니다 (OR와 별개로) 복잡한 장고-ORM 필터를 만들어이 문제를 해결할 수있는 것 같아요. 두 번 코드를 코딩해야하기 때문에 DRY가 아닙니다. has_object_permission()에서 한 번, 장고 - 오움 필터에서 한 번.

질문

중복없이 검사 권한을 내 필요 (사용자가 편집 할 수있는 객체 모두의 검색어)를 해결하는 방법

?

답변

2

DRY를 유지하기 위해 모든 데이터베이스 항목을로드하고 모든 사람에게 권한 확인을 적용해야합니다.

나는 이것이 당신이 정말로 원하는 것을 의심합니다. 때로는 물건을 건조하게 보관할 수없는 경우도 있습니다.

데이터를 사용자에게 표시 할 때도 마찬가지입니다. 일반적으로 쿼리를 수행 할 때 암시 적으로 기본 사용 권한을 적용한 다음 전체 사용 권한이 유효한지 확인합니다.

+0

이것은 내가 찾던 답변이 아니지만 다음 사항에 대해 생각해 주셔서 감사합니다. – guettli

+1

그래,이 또한 저를 방해하고 장고 REST 프레임 워크에 적합하지 않은 무언가입니다. 다른 옵션이 있는지 누구보다 기대하고 있습니다. – Linovia