【问题标题】:NodeJs / Express how to load validation midlewareNode Js/Express 如何加载验证中间件
【发布时间】:2018-08-18 06:28:46
【问题描述】:

我的主文件名为 index.js,我在其中加载了一些内容,然后分支到位于不同文件中的路由。我现在的问题是,我有几个 app.use 像这样检查有效令牌的部分。

app.use(function(req, res, next) {
// check header or url parameters or post parameters for token
var token = req.body.token || req.query.token || req.headers['x-access-token'];
// decode token
if (token) {
    console.log('MyToken:'+token)

  // verifies secret and checks exp
  jwt.verify(token, 'MySuperSecret', function(err, decoded) {      
    if (err) {
        if (err.name === 'TokenExpiredError')
        {
            return res.status(401).send({ success: false, error: err.name, message: err.message, expiredAt: err.expiredAt })   
        }
        else{
            return res.send({ success: false, message: 'Failed to authenticate token.' });
        }


    } else {
      // if everything is good, save to request for use in other routes
      console.log('success')
      req.decoded = decoded;   
      res.locals.decoded = decoded;
      next();
    }
  });

} else {

  // if there is no token
  // return an error
  return res.status(403).send({ 
      success: false, 
      message: 'No token provided.' 
  });

}

})

我的问题是,如果我在声明任何单独的路由之前将这个 app.use 函数放在我的 index.js 中,比如

app.use('/api', apiRoutes);

代码仍然会命中并使用 app.use 函数,还是我必须将 app.use 函数放在每个路由文件的顶部以保护下面的路由。 试图找出如果一个路径文件超过 1 个的最佳方法是什么。

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    您可以通过指定正则表达式来应用中间件。也许app.use('/api.*', myMiddleware) 会有所帮助。

    否则你可以试试看它是否有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 1970-01-01
      • 2016-06-08
      • 2016-08-01
      相关资源
      最近更新 更多