我有一个带有教程页面的网站。在用户可以访问网站的更深部分之前,他们必须首先阅读本教程。在我的Mongo数据库中,我设置了一个字段以进行检查:
const UserSchema = new Schema({
finished_beta_tutorial: {
type: Boolean,
default: false
},
....
当用户尝试登录时,如果finished_beta_tutorial
为false,我想将它们发送到教程页面。如果他们看到它(该字段为true
(,我想将它们发送到网站中的其他页面。
我正在使用Passport.js作为我的用户管理系统,并且我已经坚持如何执行这种差异化路由。
我的登录路线看起来像这样:
// login
router.post('/login', function(req, res) {
passport.authenticate('local', {
failureRedirect:'/users/login',
failureFlash: true
});
var condition = User.find({
})
if (req.user.finished_beta_tutorial === true) {
req.flash('success', 'You are now logged in!');
res.redirect('/dashboard/home');
}
else {
req.flash('danger', 'Please read the Beta tutorial before continuing.');
res.redirect('/users/slider');
}
}
);
棘手的部分是req.user
返回undefined
,因为登录过程尚未完成,因此在尝试登录时会导致错误。如何解决此问题以允许我上面描述的拆分路由?谢谢
尝试更新您的护照。
router.post('/login', passport.authenticate('local', {
failureRedirect:'/users/login',
failureFlash: true
}), function(req, res) {
if (req.user.finished_beta_tutorial) {
req.flash('success', 'You are now logged in!');
res.redirect('/dashboard/home');
}
else {
req.flash('danger', 'Please read the Beta tutorial before continuing.');
res.redirect('/users/slider');
}
}
);