假设我有一条带有以下名称空间的路由:
app.use('/logged', adminRoute);
现在,我创建了以下passportjs函数:
app.get('/logged/panel', function (req, res) {
if (req.user === undefined) {
res.redirect('/login');
} else {
res.render('/logged/panel', {
user: req.user
})
}
});
此功能检查是否在
/logged/panel
模式下对用户进行了身份验证。我想修改此功能,以便它将对
adminRoute
中的每个获取/发布网址模式执行检查。如何正确执行此操作? 最佳答案
考虑使用express.Router
。
function ensureAuthenticated(req, res, next) {
if(logged) return next();
res.redirect('/login');
}
var loggedRouter = express.Router();
loggedRouter
.use(ensureAuthenticated)
.get('/panel', panelHandler)
.get('/other', otherHandler);
var mainRouter = express.Router();
mainRouter.use('/logged', loggedRouter);
app.use(mainRouter);
您可以包括检查用户是否在
ensureAuthenticated
功能内登录。该中间件功能将始终在/logged/panel
和/logged/other
之前执行。