我使用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不是"清洁"解决方案我正在寻找,因为该目录包含太多的子文件夹和文件。
提前致谢
答案 0 :(得分:1)
当您将中间件附加到同一路由时,它们会以相同的声明顺序执行,因此如果您想在express.static
之前执行任何中间件,那么您所要做的就是将它附加到同一路由中以前申报。
app.use('/secure', myMiddleWare);
app.use('/secure', express.static(__dirname + '/../../client'));