繁体   English   中英

限制访问用户在nodejs中上传的文件?

[英]restricting access to user uploaded files in nodejs?

我正在创建一个Node.js / Express应用程序,该应用程序允许用户上传文件(图片,声音...),但是我不希望用户仅输入文件URL并访问它,我想确认用户身份并用户是否是该文件的所有者,而我对此有一些想法

  • 通过添加UUID或类似的方式使文件名变得不可预测(但并不能真正解决问题),只会使用户更难猜测文件路径。
  • 将文件保存在数据库行中,但是从我的阅读来看,并不是最好的主意。
  • 在发送文件或将功能添加到我的API服务器之前,创建一个单独的服务器以确认用户身份和文件所有者。

那么您认为什么是最好的选择,或者您有更好的主意?像Facebook这样的大人物怎么做到的?

使用UUID,但不仅要使文件可用作静态资源。 它们仍应位于身份验证功能之后。 将UUID保存在拥有该文件的用户的数据库中。 然后,身份验证功能将检查所请求的UUID是否属于登录用户。

像这样:

app.use('/uploads/:uuid', authImage, express.static('uploads'));
function authImage(req, res, next){
    if(req.user.images.contains(req.params.uuid))
        next();
    else
        res.status(403).send('Forbidden');
}

您没有提到您使用的是什么数据库。 如果您使用的是mongodb,则可以使用其GFS(网格文件系统)功能来存储文件。 当您存储文件时,您还可以添加元数据,在您的情况下,它将是用户ID或用户的db记录ID,以便您查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM