【发布时间】:2021-06-26 13:24:48
【问题描述】:
通过此实现,API 端点中的任何人都可以看到整个用户列表。例如,如果我将权限类更改为 IsAdmin,则用户无权访问他们自己的用户。什么是只返回当前用户的安全方法?是否可以在 get_queryset() 函数中仅过滤掉该用户?
class UserList(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):
serializer_class = UserSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
def get(self, request, *args, **kwargs):
self.serializer_class = UserGetSerializer
return self.list(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
def get_queryset(self):
qs = get_user_model().objects.all()
if self.request.user:
# Return the currently logged in user
status = self.request.query_params.get("user", None)
if status and status == "current":
qs = get_user_model().objects.filter(pk=self.request.user.pk)
return qs
【问题讨论】:
标签: django-rest-framework view permissions django-users