这更像是一个涉及nodejs作为实现的架构问题。
我有一个文件夹没有透露我想要提供给用户的网络服务器文件。
nodejs应该将资源暴露给最终用户的方式是通过一次性链接,一次消耗不再可用。 用户通过整个体验永远不会知道文件的真实位置。
我确信这是一种常见的架构模式,但我从未实现类似的东西。 考虑可扩展性,资源不应该在HD或RAM上进行复制,如果可能,解决方案不应该在数据库令牌跟踪系统上进行中继。
我不需要代码实现,但需要详细解释如何实现它
非常感谢
答案 0 :(得分:4)
避免依赖数据库的一种方法是在文件系统中创建一个符号链接(基于令牌),在请求之后将被删除。虽然在窗户上不会令人满意。
示例(伪):
但是,我不认为有一种可靠的方法可以知道文件是否已成功下载,因此您可以更好地为此做好准备。完全下载文件时的某种pingback可能是我现在能想到的最可靠的方式。
要获得可伸缩性,请确保符号链接位于共享文件系统上。虽然在同一台服务器上集群的node.js实例也没问题。
如果需要将其限制为经过身份验证的用户,则可以将guid与auth令牌结合使用,并在查找文件之前添加/附加它。
答案 1 :(得分:4)
当用户按ID请求资源时:
有一个db令牌跟踪系统。嘿,这是唯一的方法。