基于数据库字段的区分登录响应:Express Node MongoDB



我有一个带有教程页面的网站。在用户可以访问网站的更深部分之前,他们必须首先阅读本教程。在我的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');
       }
    }
);

最新更新