Passport.js, express.js, методы перенаправления (successRedirect и faultRedirect) - PullRequest
0 голосов
/ 01 сентября 2018

Я использую express.js и passport.js.

Этот код для входа в систему:

router
  .route('/login')

  .get((req, res) => res.render('pages/login'))

  .post((req, res, next) => {
    passport.authenticate('local', (err, user, info) => {
      if (err) return next(err)
      if (!user) return res.render('pages/login', { errMsg: info.message })
      req.login(user, err => {
        if (err) return next(err)
        return res.redirect('/')
      })
    })(req, res, next)
  })

Теперь мне нужно понять, как использовать методы перенаправления Passport.js: http://www.passportjs.org/docs/authenticate/#redirects

Как я могу использовать этот код в своем собственном коде?

app.post('/login',
  passport.authenticate('local', { successRedirect: '/',
                                   failureRedirect: '/login' }));

1 Ответ

0 голосов
/ 04 марта 2019

У меня был похожий вопрос, решенный так

if (!user) return res.render('pages/login', { errMsg: info.message })  -->

if (!user) {
        req.flash('error', 'Invalid username or password');
        res.redirect('/login');
        return }

req.logIn(user, function(err) {
            // Invalid password
            if (err) {
                req.flash('error', 'Invalid username or password');
                next(err);
                return
            }
            req.flash('success', 'You are logged in');
            res.redirect('/');
            return
        });

Я не нашел другого способа реализации successRedirect и failRedirect, так как вы должны использовать паспортную функцию .logIn

...