django-rest-framework - 根据用户 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 权限,但是这让所有登录的用户都可以访问其他用户的文件信息。
实现这一目标的最佳方法是什么?
解决方案
如果您使用 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
推荐阅读
- android - 如何使物体在触摸时浮动?
- solidity - 使用 ethers js 运行安全帽测试时,合同事件侦听器未触发
- sublimetext - 如何在远程 python 上运行 SublimeREPL
- c++ - 如何从用户获取文本输入并将该文本设置在 Qt 3D 中的 3d 对象上?
- android - 安卓值.xml
- 内部元素必须是资源引用或为空
- java - JavaFX:无法在微调器的增量方法中捕获异常
- c++ - Sublime Text 3:SDL2/SDL.h:没有这样的文件或目录
- python - 为什么我的 CNN 的准确率/损失在训练期间没有变化?
- asp.net - 异步。在 .Net Core 中编程
- python - 按组计数(熊猫)