【发布时间】:2017-05-08 08:26:54
【问题描述】:
我必须建立一个项目,用户将在其中登录并上传一些图像和视频,并且上传的文件应该只有上传者或网站管理员才能看到。
我主要是 Node.js,所以我尝试使用 express 中间件来限制用户的媒体文件,但我注意到这不是处理这个问题的最佳方法,因为 express 不擅长呈现静态内容。
以下是一些谷歌会话后我能想到的选项
- Amazon S3 存储桶,每个用户都可以在其中获得自己的文件夹/权限和文件(但当我们有 url 时文件是真正私有的)
- 使用来自 S3 存储桶的预签名 URL 生成文件的临时 URL(该文件将公开 20 分钟,我不希望这样)
- 限制对 Nginx 的访问(我也不知道 Nginx 是否可以访问数据库并验证它收到的请求)
- 在 mongoDB 中使用 GridFS? (我可能不会使用这个,但想看看这是否可以解决)
还有其他方法可以做到这一点吗?
【问题讨论】:
-
如果您的内容取决于谁登录,则它不是静态的。最简单的方法是编写您自己的代码来检查权限,然后从磁盘加载文件。用 node.js 或任何其他语言编写自己的文件加载代码并没有错。 仅当它成为问题时,您才应该担心性能。
标签: node.js amazon-web-services nginx amazon-s3 private