仅在特定路线上使用multer

时间:2018-11-26 01:10:57

标签: javascript node.js middleware multer

我在NodeJS应用中使用中间件,例如ReactJS作为前端。

    app.use(*, middleware);

中间件的主要工作是验证传入的请求,即主要是JWT检查,然后才执行next()将请求转发到所需的路由。

我遇到的主要问题是:

我正在使用JSON来回传输数据。但是,当我上传文件时,在这种特定情况下,我正在使用FormData()。因此,我必须使用multer读取多部分数据。主要问题是我有一个中间件,其中每个请求都在处理。因此,要使任何文件到达特定端点,都必须通过中间件。所以我需要做:

    var multer = require('multer');

    var upload = multer({dest: '/upload'});

    app.use("*", upload.any(), middleware);
    app.use("/register", register);

内部中间件:

    export const middleware = (req, res, next) => {
      // check if req has proper JWT value. if yes 
      //  next();
      // if no
      // res.json("Sorry can't move on.");
    }

我在这里面临的主要风险是:任何恶意用户都可以将文件上传到任何端点。这使我的API处于危险之中。有什么方法可以绕过此方法,而仅在特定端点上使用multer吗?

此外,如果我这样做:

    app.use("*", upload.none(), middleware);

我遇到500错误。我不知道它从哪里来。

1 个答案:

答案 0 :(得分:0)

app.use(“ *”,中间件,upload.none());

尝试在upload.none()之前使用middelware函数