限制用户访问其他用户内容的最优雅方式是什么?

what is the most elegant way to restrict users from accessing other users' content?

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

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

这是我在一些 google 会话后可以想到的一些选项

还有其他方法吗?

最优雅的方式是礼貌地要求他们不要访问其他人的内容。

不过我不确定这是最有效的方法。

不过,说真的,我建议使用 express.static 中间件和 Passport 或其他东西来实现身份验证和权限。您在这里 "rendering" 不是任何静态内容。您只是直接从磁盘流式传输文件。

每个用户都有一个唯一的 ID,其中内容(文件和视频等)部分由该 ID 引用,这样客户只能访问他们的 ID 内容

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

避免将用户名或 ID 放入任何 URL,这是多余的,服务器在内部维护此知识。无需混淆 URL。例如,当我与我的私人内容互动时,亚马逊 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服务器必须拒绝其他人的内容,因为它未被授权与其他人的内容混为一谈