【问题标题】:User can update or delete data which created by others用户可以更新或删除他人创建的数据
【发布时间】:2019-11-21 05:37:22
【问题描述】:
class StoryViewSet(viewsets.ModelViewSet):
    serializer_class = StorySerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)

我有所有 CRUD 功能的视图集。问题是用户可以编辑或删除另一个用户的故事,我在permissions 中找到了DjangoModelPermissionsOrAnonReadOnly,但我什至无法创建。我在Storymodel 中使用author 作为foreign key。我也在使用rest_framework.authtoken。所以,我认为有两个选择,创建自己的权限或重写一些权限。哪个更好?

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    编写客户对象级权限。这是一个例子:

    class IsOwnerOrReadOnly(permissions.BasePermission):
        """
        Object-level 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
    
            return obj.author == request.user
    

    并将其包含在permission_classes 列表中。

    【讨论】:

      猜你喜欢
      • 2016-04-27
      • 2019-11-05
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      相关资源
      最近更新 更多