不能在快递4的Router.use()中调用包含的中间件

时间:2014-12-06 14:42:49

标签: javascript node.js express express-4

我写了一个重定向没有授权用户的函数

module.exports = function(req, res, next) {
if (!req.session.authUser) {
    // if AJAX request
    if(req.xhr) 
        helpers.send_failure(not_authorized());
    else
        res.redirect('/');
    return;
} 
else 
    next();
};

并将其附加到表达4的路由器

/// included all necessary modules: express, redirectNotAuthorized etc..

var authRouter = express.Router();
authRouter.use(redirectNotAuthorized());   
app.use('/', authRouter);

但是得到了一个错误,req是未定义的。甚至试图自己传递论据:

authRouter.use(redirectNotAuthorized(req, res, next));  

但收到错误req未定义

然后我尝试在此(路由器)模块中编写redirectNotAuthorized函数,但出现错误Router.use() requires middlewarefunctions

如果我在Express的指南中这样做,它可以工作:

router.use(function(req, res, next) {
  res.send('Hello World');
});

但它不舒服,因为我也需要(包括)它们在其他路由器中。

不知道这是我的愚蠢,还是一个错误。如果它是一个bug,请问我如何在其他路由器中包含相同的中间件。感谢

0 个答案:

没有答案