我正在创建一个Node.js / Express应用程序,允许用户上传文件(图片,声音......),但我不希望用户只输入文件URL并访问它,我想要确认用户身份以及用户是否是该文件的所有者,我对如何操作有一些想法
那么你认为什么是最好的选择,或者你有更好的想法,像Facebook那样的大镜头是怎么做的?
答案 0 :(得分:1)
使用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');
}
答案 1 :(得分:0)
您没有提到您使用的数据库。如果您使用的是mongodb,则可以使用其GFS(网格文件系统)功能来存储文件。存储文件时,您还可以添加元数据,在您的情况下,它将是用户ID或用户的数据库记录ID,以便您可以查询。