Django rest framework 根据用户id/令牌限制api GET请求-Django Rest框架

Django rest framework 根据用户id/令牌限制api GET请求-Django Rest框架,django-rest-framework,django-rest-auth,Django Rest Framework,Django Rest Auth,我想返回通过REST链接到数据库中用户的文件列表 例如,返回id为1到的用户的响应: -->{“文件信息1”、“文件信息2”、…} 但是,我要确保的是,其他用户无法访问上述信息,因为他们的ID不是1,即如果另一个用户的ID为2,则上述URL应以拒绝权限的方式响应 我知道DRF拥有IsAuthenticated权限,但是这允许所有登录用户有可能访问其他用户的文件信息 实现这一目标的最佳方法是什么 如果您使用的是DRF通用细节视图,则可以覆盖get\u object()并在那里添加检查 def ge

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

例如,返回id为1到的用户的响应:

-->{“文件信息1”、“文件信息2”、…}

但是,我要确保的是,其他用户无法访问上述信息,因为他们的ID不是1,即如果另一个用户的ID为2,则上述URL应以拒绝权限的方式响应

我知道DRF拥有IsAuthenticated权限,但是这允许所有登录用户有可能访问其他用户的文件信息


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

如果您使用的是DRF通用细节视图,则可以覆盖
get\u object()
并在那里添加检查

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

如果您使用的是DRF通用详细信息视图,则可以覆盖
get\u object()
并在那里添加检查

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

DRF视图具有“权限\类”属性。最好防止将此请求作为权限

DRF视图具有“权限类”属性。最好防止将此请求作为权限

如果用户的ID存储在localstorage中,那么在使用非django前端(如ReactJS或Vue)时可以做到这一点吗?但您仍然将身份验证令牌头发送到端点,对吗?因此Django将看到您的身份验证状态,并将您的用户ID与URL中的ID进行比较。它现在正在使用您建议的get_对象覆盖。谢谢你的建议!我已经启用了JWT,使API更加安全!如果用户的ID存储在localstorage中,那么在使用非django前端(如ReactJS或Vue)时可以做到这一点吗?但您仍然将身份验证令牌头发送到端点,对吗?因此Django将看到您的身份验证状态,并将您的用户ID与URL中的ID进行比较。它现在正在使用您建议的get_对象覆盖。谢谢你的建议!我已经启用了JWT,使API更加安全!