跳过中间件然后去路由

时间:2016-04-22 14:30:44

标签: node.js express

如何跳过中间件并转到路线?

app.use(function(req, res, next) {
  if (req.originalUrl === '/login') {
    // How to skip the auth middleware and continue the routes?
    ??
  }

  next();
});

// auth middleware
app.use(acl.auth);

app.use('/', routes);

1 个答案:

答案 0 :(得分:0)

  1. 正如他们所指出的,acl.auth会因每次请求而被解雇。
  2. 为什么使用两个中间件来检查身份验证?
  3. req.body.user不好。将用户保存在请求或会话中。
  4. 回答你的问题,你可以这样做:

    app.use(function(req, res, next) {
      if (typeof req.user !== 'undefined') {
        // Define a variable in request
        req.isAuthenticated = true;
        next();
      }
    
      next();
    });
    

    在您的acl.auth中,您可以检查该变量。

    if(req.isAuthenticated) next();
    

    修改

    您也可以不使用app.use()跳过中间件。 例如: 需要身份验证的路由:

    app.get(acl.auth, function(req, res){});
    

    无需身份验证的路线:

    app.get(function(req, res){});