我有一个权限类,用于检查obj.account是否等于request.user.profile.account:
class IsOwner(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
return request.user.profile.account == obj.account
这是我的观点:
class ContactDetailView(APIView):
permission_classes = (IsOwner, )
def get(self, request, pk, format=None):
contact = get_object_or_404(Contact, pk=pk)
serializer = ContactSerializer(contact)
return Response(
serializer.data,
)
但是我没有权限错误。它将毫无问题地返回联系人数据。
我的错误在哪里?
您需要check_object_permissions
在响应之前调用方法:
class ContactDetailView(APIView):
permission_classes = (IsOwner, )
def get(self, request, pk, format=None):
contact = get_object_or_404(Contact, pk=pk)
serializer = ContactSerializer(contact)
self.check_object_permissions(request, contact)
return Response(
serializer.data,
)
请注意,通用视图类默认已调用它。但是由于您没有使用RetrieveAPIView
,所以需要手动进行操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句