我曾尝试寻找答案,但我想我可能使用了错误的术语,所以我想我会试一试。
我有一个 Rails 应用程序,公司可以在其中拥有多个用户的帐户,每个用户具有不同的权限等。系统的一部分将能够上传文件,我正在寻找 S3 进行存储。我想要的是能够说公司 A 的用户只能下载与该公司关联的文件?
我的印象是,除非我将下载限制在我的部署服务器 IP 范围(将是 Heroku),然后通过控制器和 send_file() 调用提供文件。这会起作用,但是我正在将数据从 S3 读取到 Heroku,然后返回给用户,而不是直接从 S3 到用户。
如果我使用 send_file 方法,我可以关闭我的 S3 服务器到外部世界并让我的 Heroku 应用程序直接发送文件吗?
我的一个不太安全的想法是为每个文件创建一个唯一的 slug 并将其存储在该名称下,以防止随机猜测文件http://mys3server/W4YIU5YIU6YIBKKD.jpg
等。这将是快速和肮脏的,但不是 100% 安全。