将中间件与 express() 一起使用。与 express.static 一起使用
Using middleware with express().use along with express.static
我正在使用 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'));
计划是,中间件确保只有在 he/she 登录时用户才会被转发到 WebApp。如果没有,he/she/it 被重定向到根文件夹。
我发现 this answer, but according to the documentation, the new version supports multiple functions. This 不是我正在寻找的 "clean" 解决方案,因为该目录包含太多子文件夹和文件。
提前致谢
当你将中间件附加到相同的路由时,它们会以相同的声明顺序执行,所以如果你想在 express.static
之前执行任何中间件,你所要做的就是将它附加到相同的路由并在之前声明它。
app.use('/secure', myMiddleWare);
app.use('/secure', express.static(__dirname + '/../../client'));
我正在使用 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'));
计划是,中间件确保只有在 he/she 登录时用户才会被转发到 WebApp。如果没有,he/she/it 被重定向到根文件夹。
我发现 this answer, but according to the documentation, the new version supports multiple functions. This 不是我正在寻找的 "clean" 解决方案,因为该目录包含太多子文件夹和文件。
提前致谢
当你将中间件附加到相同的路由时,它们会以相同的声明顺序执行,所以如果你想在 express.static
之前执行任何中间件,你所要做的就是将它附加到相同的路由并在之前声明它。
app.use('/secure', myMiddleWare);
app.use('/secure', express.static(__dirname + '/../../client'));