提供具有 S3 后端和用户权限的媒体文件



我很惊讶,但我在谷歌上找不到任何有完全相同要求的人,所以我来了。我正在设计一个 Django 项目,我知道敏感文档会被用户上传,所以我需要引入某种权限控制机制(目前考虑使用 JWT(。

为了使我的项目从操作角度无状态(计划在容器中运行(,我想将用户上传的文件存储在分布式对象存储系统 (S3/minio( 中。

这就是我迷路的地方。我知道在"常规"Django 生产环境中,用户上传的媒体文件倾向于转到./media文件夹,网络服务器直接从那里提供它,而无需任何类型的身份验证。对我来说,这是有风险和不可接受的,因为共享的直接链接可以被嗅探/泄露,未经授权的人可以访问敏感文档。

总结一下

  • 存储/提供用户上传内容的公认做法是什么 在/从S3/迷你?
  • 如何控制对这些文件的访问?

谢谢!

我认为你的搜索查询是错误的,因为你不知道要寻找什么,这是一个 Django 存储引擎:

如果需要提供自定义文件存储

(一个常见示例是将文件存储在某个远程系统上(,则可以通过定义自定义存储类来实现。

当然,这已经为您完成了:

django-storages是Django的自定义存储后端的集合。

  • 亚马逊 S3
  • Apache Libcloud
  • Azure Storage
  • 数字海洋
  • 保管箱
  • 邮票
  • 谷歌云存储 自来水龙

最新更新