【发布时间】:2021-06-03 20:01:40
【问题描述】:
我正在使用 passportJS 进行身份验证。我在 app.js 中调用了 setAuthenticatedUser 函数
app.use(passport.initialize());
app.use(passport.session());
app.use('/', require('./routes'));
app.use(passport.setAuthenticatedUser);
这是我在文件 ./config/passport-local.js 中的中间件
passport.setAuthenticatedUser = async function (req, res, next) {
if (await req.isAuthenticated()) {
// req.user contains the current signed in user from the session cookie and we are just sending this to the locals for the views
res.locals.user = req.user;
// console.log('Locals\' user loaded');
}
next();
}
在app.js中调用后没有错误但setAuthenticatedUser没有运行。相反,我必须从每个路由手动调用中间件
router.get('/', passport.setAuthenticatedUser, homeController.home);
router.get('/route1', passport.setAuthenticatedUser,homeController.route1);
router.get('/route2', passport.setAuthenticatedUser, homeController.route2);
router.get('/route3', passport.setAuthenticatedUser, homeController.route3);
router.get('/route4', passport.setAuthenticatedUser, homeController.route4);
我以后会添加更多的路线。我该怎么做才能不必为每个 get req 添加中间件?
如果您需要更多信息,请告诉我
【问题讨论】:
标签: node.js express mongoose passport.js ejs