【问题标题】:Using middleware with express().use along with express.static将中间件与 express().use 和 express.static 一起使用
【发布时间】:2015-01-06 13:14:48
【问题描述】:

我正在使用 PassportJS 来保护 WebApp(用 AngularJS 编写)。我正在使用带有 Express (4.0.0) 的 NodeJS 在登录屏幕后提供静态内容。我不知道如何同时使用中间件和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 不是我正在寻找的“干净”解决方案,因为该目录包含太多子文件夹和文件。

提前致谢

【问题讨论】:

  • 我不明白其他问题/答案如何无法解决您的情况。看起来完全匹配......我错过了什么?
  • 你安装了什么版本的 Express?
  • 我正在使用“版本”:“4.0.0”

标签: node.js express static middleware


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    相关资源
    最近更新 更多