如何在使用 multer 上传文件之前 运行 验证检查我的快速路线

How to run auth check in my express route before uploading a file with multer

node.jsexpress 中处理我的后端,新使用 multer 上传文件。

我想检查我的用户是否有有效的令牌:如果是,他可以上传文件,如果没有,返回 401。使用我的以下代码,这有效,但文件仍会上传,即使用户没有有效令牌。

我想我的检查应该在参数 upload.single('image') 之前进行,但我真的不知道如何进行。 有什么建议吗?

我的代码:

router.post("/", upload.single('image'), (req, res, next) => {
    if (!req.isAuth) {
      res.status(401).json({error: "Unauthenticated"});
    } else {
      console.log('file', req.file);
      res.status(200).json({resultFileName: req.file.filename });
    }
});

你可以试试这个,但我没有测试过,也有一段时间没用过 express。

router.post("/", (req, res, next) => {
    if (!req.isAuth)
      return res.status(401).json({error: "Unauthenticated"});
    next();
}, upload.single('image'), (req, res, next) => {
    console.log('file', req.file);
    res.status(200).json({resultFileName: req.file.filename });
});

创建中间件或助手并在其中创建 authorize.js 文件并在其中添加 jwt 授权代码,如下所示

authorize.js

const jwt = require('jsonwebtoken');

module.exports = {
    jwtAuth: (req, res, next) => {

    //Jwt verification code according to your configuration

   }
}

然后将该文件导入您的路由文件夹并像下面那样使用它

Users.js

const authorize = require('../middlewares/authorize')


router.post("/", authorize.jwtAuth, upload.single('image'), (req, res, next) => {
      console.log('file', req.file);
      res.status(200).json({resultFileName: req.file.filename });
});