使用带有express()的中间件。与express.static一起使用

时间:2015-01-06 13:14:48

标签: node.js express static middleware

我使用PassportJS来保护WebApp(使用AngularJS编写)。我使用NodeJS和Express(4.0.0)在登录屏幕后提供静态内容。我不知道如何同时使用中间件和express.static()

我的(不工作)代码看起来像

app.use('/secure', 
    function (req, res, next) {
        if (req.isAuthenticated())
            return next();

        res.redirect('/');
    }, 
    express.static(__dirname + '/../../client'));

计划是,中间件确保用户只有在他/她登录时才会被提供给WebApp。如果没有,他/她/它会被重定向到根文件夹。

我找到this answer,但根据the documentation,新版本支持多种功能。 This不是"清洁"解决方案我正在寻找,因为该目录包含太多的子文件夹和文件。

提前致谢

1 个答案:

答案 0 :(得分:1)

当您将中间件附加到同一路由时,它们会以相同的声明顺序执行,因此如果您想在express.static之前执行任何中间件,那么您所要做的就是将它附加到同一路由中以前申报。

app.use('/secure', myMiddleWare);
app.use('/secure', express.static(__dirname + '/../../client'));