gpt4 book ai didi

node.js - 限制用户访问其他用户内容的最优雅的方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:19 24 4
gpt4 key购买 nike

我必须构建一个项目,用户将在其中登录并上传一些图像和视频,并且上传的文件应该仅由上传者或网站管理员可见。

我主要使用 Node.js,所以我尝试使用 Express 中间件来限制用户的媒体文件,但我发现这不是处理这个问题的最佳方法,因为 Express 不擅长渲染静态内容。

以下是我在谷歌 session 后可以想到的一些选项

  • Amazon S3 存储桶,每个用户都可以在其中获得自己的文件夹/权限和文件(但当我们有 URL 时,这些文件是否真正私有(private))
  • 使用 S3 存储桶中的预签名 URL 生成文件的临时 URL(该文件将公开 20 分钟,我不希望这样)
  • 限制对 Nginx 的访问(同样我不知道 Nginx 是否可以访问数据库并验证它收到的请求)
  • 将 GridFS 与 mongoDB 结合使用? (我可能不会使用这个,但想看看这是否可以作为解决方案)

还有其他方法可以做到这一点吗?

最佳答案

每个用户都会获得一个唯一的 ID,其中内容(文件和视频等)部分由该 ID 引用,以便客户端只能访问其 ID 内容

用户登录,nodejs 将该用户与其从 mongodb 检索到的唯一 ID 配对。无需将其卸载到 nginx。内容的存放位置与此逻辑无关。可能是本地文件系统、mongo、S3 等...

避免将用户名或 ID 放入任何 URL 中,这是多余的,服务器会在内部维护这些知识。无需弄乱 URL。例如,当我与我的私有(private)内容交互时,Amazon AWS 会显示此 URL

https://console.aws.amazon.com/route53/home?#resource-record-sets:ZAHKXPA7IKZ8W

看到它只显示了我的用户名资源所特有的内容 ID。目标是尽量减少 URL 中的困惑。

或者,在共享资源的世界中​​,比如闪烁,这里的 URL 确实给出了用户名和资源 ID https://www.flickr.com/photos/okinawa-soba/31419099190/in/photostream/在您的情况下,即使有人获取了他人内容的 URL,服务器也必须拒绝,因为它无权破坏他人的内容

关于node.js - 限制用户访问其他用户内容的最优雅的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41287766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com