首页 > 解决方案 > 根据用户 ID/令牌限制 api GET 请求 - Django Rest Framework

问题描述

我想通过 REST 返回链接到我的数据库中的用户的文件列表。

例如,通过以下方式为 id 为 1 的用户返回响应:

http://localhost:8000/api/files/1/ --> {"文件信息 1", "文件信息 2", ...}

但是,我要确保其他用户无法访问上述信息,因为他们的 ID 不是 1,即如果另一个用户的 id 为 2,则上述 URL 应以 Permission Denied 响应。

我知道 DRF 具有 IsAuthenticated 权限,但是这让所有登录的用户都可以访问其他用户的文件信息。

实现这一目标的最佳方法是什么?

标签: django-rest-frameworkdjango-rest-auth

解决方案


如果您使用 DRF Generic Detail View,您可以get_object()在此处覆盖并添加检查

def get_object(self):
    user = super(ViewClassName, self).get_object()
    if self.request.user != user:
        raise PermissionDenied
    return user

推荐阅读