gpt4 book ai didi

django-rest-framework - 如何在 APIView 中使用对象级权限?

转载 作者:行者123 更新时间:2023-12-05 01:13:50 25 4
gpt4 key购买 nike

我有一个权限类来检查 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,
)

请注意,通用 View 类已默认调用它。但是由于您没有使用 RetrieveAPIView 您需要手动进行。

关于django-rest-framework - 如何在 APIView 中使用对象级权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59555530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com