passport.authenticate successRedirect条件

时间:2017-01-05 00:50:38

标签: express passport.js passport-local

在我的app.js中我有:

router.post('/login', passport.authenticate('local', {
  successRedirect: '/admin/users',
  failureRedirect: '/login'
}), function (req, res) {
});

我的用户对象如下所示:

{ _id: 586afad4a4ff884d28b6ca97,
  firstName: 'Joseph',
  ...
  isAdmin: false }

我想做的是:

router.post('/login', passport.authenticate('local', {
  successRedirect: {
    if(req.body.user.isAdmin === true) {
      res.redirect('/admin/users')
    }
    res.redirect('/dashboard');
  },
  failureRedirect: '/login'
}), function (req, res) {
});

但似乎我不能。使用passport.authenticate检查用户是管理员还是登录帖子的最简单示例是什么

1 个答案:

答案 0 :(得分:12)

我能够弄清楚。 passport.authenticate中的可选对象让我很困惑。所以我做的是:

router.post(
  '/login',
  passport.authenticate('local', {
    failureRedirect: '/login'
  }), (req, res) => {
    if (req.user.isAdmin === true) {
      res.redirect('/admin/gifts?filter=review');
    }
    if (req.user.isAdmin === false) {
      res.redirect('/dashboard/received');
    }
  });