node.js - 第二个中间件只在路由方法之后调用

标签 node.js express

我有 2 个中间件,一个检查用户是否拥有有效 token ,第二个检查用户是否有权限。问题是,在调用第一个中间件后,程序直接进入我的路由方法,而不是调用第二个中间件。这是我的代码:

app.use(function(req, res, next) {
  checkToken(req, res, next);
  checkPermission(req, res, next);
});

app.post("/test", (req, res) => {
  console.log("route");
})

function checkToken(req, res, next){
  console.log("check token");
  if(validToken())
    next();
  else
    res.send("no valid token");
}

function checkPermission(req, res, next){
  console.log("check permission");
  if(permission())
    next();
  else
    res.send("no permission");
}

我得到的输出:

check token -> route -> check permission

我期望的输出:

check token -> check permission -> route

我想让我的程序做的是在进入我的路由方法之前检查用户是否有有效的 token 以及他是否有权限!

这是正确的做法吗?

最佳答案

app.use(checkToken);
app.use(checkPermission);

app.post("/test", (req, res) => {
  console.log("route");
});
...

关于node.js - 第二个中间件只在路由方法之后调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52681563/

相关文章:

node.js - 通过不同属性进行Dynamoose查询(Node.js)

node.js - 我希望我的 aws lambda 在 mysql 查询在 node.js 上完全执行之前不返回任何内容

javascript - 如何从 Node 中的 module.exports 链调用函数

javascript - 从同一对象内的函数访问对象属性

javascript - 在 Nodejs/Express 中链接 promise 的最佳实践

angularjs - 如何将数组发送到 API 调用中以设置对象列表 - Angular

node.js - 如何获取k8s master ip地址?

node.js - 在express js中存储 session 数据的最佳选择是什么

node.js - Angular 9 Node.js AWS - 从 'aws-sdk' 添加导入 AWS 后编译错误

javascript - 在 expressJS 中处理路由的最佳实践是什么