Fla*_*ois 2 permissions django-rest-framework
我有一个从ListAPIView派生的视图,具有以下权限:
permission_classes = (permissions.IsAuthenticated, IsOwnerOrSuperuser, )
IsOwnerOrSuperuse定义如下:
class IsOwnerOrSuperuser(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
return obj.user == request.user or request.user.is_superuser
Run Code Online (Sandbox Code Playgroud)
(这与教程非常相似)
现在,当普通用户查询我的视图时,它可以看到每个人的对象.是否将权限应用于列表中的每个对象?如何以最小的开销强制执行此类行为?
谢谢
不,has_object_permission不应用于列表和创建端点,仅检索,更新和删除只有单个实例的地方.要过滤列表,您应该使用get_queryset过滤对象.
class BlogList(generics.ListAPIView):
serializer_class = BlogSerializer
permission_classes = (IsOwnerOrSuperuser,)
def get_queryset(self):
user = self.request.user
return Blog.objects.filter(user=user)
Run Code Online (Sandbox Code Playgroud)
要应用更多权限,您需要实现.has_permission(self, request, view)....
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |