簡體   English   中英

DRF get_permissions似乎無法正常工作

[英]DRF get_permissions doesn't appear to work correctly

我正在嘗試為自定義User模型配置權限,並且正在使用Viewset為該模型運行CRUD操作。 根據操作,我需要設置不同的權限要求,例如:

  • 任何人都可以create一個新的User實例
  • 只有所有者或管理員才能retrieveupdate用戶

由於某種原因,當我在類中定義get_permissions方法時,如下所示:

def get_permissions(self):
    if self.action == 'create':
        return [AllowAny(),]

    elif self.action == 'me':
        return [IsAuthenticated(),]

    return [IsAuthenticated(), IsOwnerOrAdmin()]

但是當我導航到/api/v1/users/ ,DRF資源管理器沒有顯示創建新User的表單,並給了我403錯誤。 另一方面,當我注釋掉此函數時,我可以正確看到表單,但是顯然不能那樣使用它。

作為參考,我的自定義IsOwnerOrAdmin權限類如下所示:

class IsOwnerOrAdmin(permissions.BasePermission):

    @staticmethod
    def _is_admin(request):
        return request.user.is_superuser

    def has_permission(self, request, view):
        try:
            is_owner = str(request.user.id) == view.kwargs.get('pk')

            return is_owner or self._is_admin(request)

        # if request.user.uuid is not there (i.e. AnonymousUser)
        except AttributeError:
            return False

這里可能是什么問題?

class IsOwnerOrAdmin(BasePermission):
    @staticmethod
    def _is_admin(request):
        return request.user.is_superuser

    def has_object_permission(self, request, view, obj):
        return obj == request.user or self._is_admin(request)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM