我使用中间件来检查用户是否登录以查看某些页面,这些页面是我在登录路径之外的单独文件中声明的。中间件将req.originalUrl
添加到req.session.returnTo
字段中。我在登录路径中使用passport.authenticate
将用户序列化到会话中,但当它这样做时,不知何故它会拿走req.returnTo
字段?我不知道。我不明白为什么。
我正在使用的中间件:
module.exports.isLoggedIn = (req, res, next) => {
if(!req.isAuthenticated()){
req.session.returnTo = req.originalUrl;
req.flash('error', 'Must be Signed in first');
res.redirect('/login');
}
else{
next();
}
}
当我尝试在登录路由中使用req.returnTo
字段时,它没有出现:-
router.post('/login', passport.authenticate('local', { failureFlash: true, failureRedirect: '/login' }), (req, res) => {
req.flash('success', 'Welcome back !');
const redirectUrl = req.session.returnTo || '/campgrounds';
res.redirect(redirectUrl);
})
redirectUrl
值为空
1条答案
按热度按时间uyhoqukh1#
尝试按如下所示保存会话数据