提供用户保护文件的最佳方法 - Node.js、Express 服务器

问题描述

我想知道从我的 Express 服务器 (API) 提供私有(给用户文件的最佳方式是什么。

每个用户都可能拥有包含私人数据的关联文件,这些文件不应公开,其他用户也不能使用。

这意味着我不能简单地使用 app.use('/static',express.static(path.join(__dirname,'public')))

许多专家指出,提供静态文件/内容的最佳方式根本不是来自服务器,而是来自 Amazon S3 等云服务。我欢迎这个想法,因为这可以减轻服务器提供静态(可能很大)文件的负担。但是这样的云存储上的文件不能是私有的,也不能与特定用户相关联,对吗?

我遇到其他 example 指出如何保护 express.static 目录。但在我看来,此示例仅检查用户是否已通过身份验证 - 未根据我的需要进行授权。每个被授予对静态目录的访问权限的用户也将被授予访问其他用户文件的权限。这不是我想要的。

最后一个选项 - 这很容易实现 - 是将文件存储到数据库中。我想象有这样的事情:

var fileSchema = new mongoose.Schema({
    user: { type: Schema.Types.ObjectId,ref: 'User' },name: String,desc: String,file:
    {
        data: Buffer,contentType: String
    }
});

因此该文件明确属于特定用户,其他用户即使在系统中通过身份验证也无法访问它(我的意思是这里的逻辑非常简单)。

但似乎将文件存储在数据库中并不是一个好习惯。它对数据库和 API 施加了额外的负载。这就是为什么我正在寻找其他可能的解决方案。

非常感谢任何建议/评论/解决方案!谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)