Как передать последний посещенный URL в passport.authenticate - node.js express app - PullRequest
0 голосов
/ 16 февраля 2019

В маршруте входа в приложение я использую метод passport.authenticate ():

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

Но там реализованы только фиксированные URL-адреса перенаправления.Я хотел бы передать адрес последнего посещенного маршрута - url этому процессу, но в этой реализации метод authenticate () не принял параметры запроса и ответа.

1 Ответ

0 голосов
/ 16 февраля 2019

Вы можете получить текущий URL с помощью "req.url" и сохранить в сеансе непосредственно перед тем, как перенаправить пользователя на / login

req.session.recentUrl = req.url
res.send()

Теперь измените / login login на

router.post("/login", passport.authenticate("local",{
        successRedirect: req.session.recentUrl,
        failureRedirect: "/login"
}), function(req, res){ });

Примечание: Обязательно очистите req.session.recentUrl после соответствующей обработки.

edit: req не определено это промежуточное ПО в вашем пост-маршруте.

app.get('/protected', function(req, res, next) {
  passport.authenticate('local', function(err, user, profile) {
    if (err) { return next(err) }
    if (!user) { return res.redirect('/signin') }
    res.redirect('/account');
  })(req, res, next);
});

Эта проблема уже устранена, дополнительная информация: https://github.com/jaredhanson/passport/issues/1

...