使用S3后端和用户权限提供媒体文件

问题描述 投票:0回答:1

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

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

这是我迷路的地方。我知道在“常规”Django制作环境中,用户上传的媒体文件往往会转到./media文件夹,而网络服务器直接从那里提供,没有任何形式的身份验证。对我来说,这是冒险和不可接受的,因为共享的直接链接可能被嗅探/泄露,未经授权的人可以访问敏感文档。

把它包装起来:

  • 在S3 / minio中存储/提供用户上传内容的公认惯例是什么?
  • 如何控制对这些文件的访问?

谢谢!

python django python-3.x amazon-s3
1个回答
1
投票

我认为你的搜索查询错了,因为你不知道该找什么,这是一个Django Storage engine

如果您需要提供自定义文件存储 - 一个常见示例是将文件存储在某个远程系统上 - 您可以通过定义自定义存储类来实现。

当然,这已经是been done for you

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

  • 亚马逊Sz
  • Apache Libcloud
  • Azure存储
  • 数字海洋
  • DropBox的
  • FTP
  • Google云端存储SFTP
© www.soinside.com 2019 - 2024. All rights reserved.