Nodejs Express 4 Multer | Nodejs Express 4 Multer如果用户未授权则停止文件上传

2024-02-03

我在用着multer作为 Express 4 的多部分中间件。

Express 配置为使用护照作为身份验证中间件,但如果用户未经身份验证,我找不到阻止文件上传的方法。

我想使用 onFileUploadStart 来拒绝该文件,但我找不到与“请求”对象,用它可以匹配用户。

下面的代码用于配置express与multer:

...
// Multipart file upload
app.use(multer(
{
  dest: wwwroot + path.sep + 'uploaded' + path.sep, 
  onFileUploadStart: function (file) {
    //TODO : apply security check : user auth, file size, number...
    console.log(file.fieldname + ' is starting ...')
},
onFileUploadComplete: function (file) {
    console.log(file.fieldname + ' uploaded to  ' + file.path)
}
}));
...
app.use(passport.auth.initialize());
app.use(passport.auth.session());   

EDIT

我将在下面留下答案,以防有帮助,但答案实际上非常简单:您需要将两个调用移至app.use(passport) above打电话给app.use(multer)。快递链中的每个步骤都是按顺序处理的,因此如果您希望拒绝错误的身份验证尝试,请执行此操作before您处理传入的文件上传。


可能有更好的方法来做到这一点,但这应该可以帮助您入门。更改您的快速配置以使用闭包,您将拥有对req多变的。

app.use(function(req, res, next) {
  var handler = multer({
    dest: wwwroot + path.sep + 'uploaded' + path.sep, 
    onFileUploadStart: function (file) {
      // You now have access to req
      console.dir(req);
      console.log(file.fieldname + ' is starting ...')
    },
    onFileUploadComplete: function (file) {
      console.log(file.fieldname + ' uploaded to  ' + file.path)
    }
  });
  handler(req, res, next);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nodejs Express 4 Multer | Nodejs Express 4 Multer如果用户未授权则停止文件上传 的相关文章

随机推荐