[英]DRF get_permissions doesn't appear to work correctly
我正在嘗試為自定義User
模型配置權限,並且正在使用Viewset為該模型運行CRUD操作。 根據操作,我需要設置不同的權限要求,例如:
create
一個新的User
實例 retrieve
或update
用戶 由於某種原因,當我在類中定義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.