Passport.js Перенаправление не работает после входа - PullRequest
0 голосов
/ 05 января 2019

Редактировать: Я просто попробовал следующий синтаксис req.logIn(user, { session: false }, function(err) { и отключил взаимодействие сеанса. Кажется, это работает так, поэтому проблема связана с этой конкретной частью.

Я использую Passport с локальной стратегией, связанной с MySQL, и все в порядке, пока я проверяю данные из БД.

app.post('/login', function(req, res, next) {
  passport.authenticate('local-login', function(err, user, message) {
    if (req.isAuthenticated()) {
      return res.redirect('/');
    }

    if (err) {
      return next(err);
    }

    if (!user) {
      return res.redirect('/login');
    }

    let username = user.username;
    req.session.username = username;
    req.session.email = user.email;
    req.session.verified = user.verified;
    req.session.connected = true;

    req.logIn(user, function(err) {
      if (err) { return next(err); }
      return res.redirect('/someURL');
    });

  })(req, res, next);

});

Однако шаг req.logIn не работает, он меняет URL, но страница никогда не отображается, и я должен остановить свой сервер, чтобы разблокировать мою страницу. Если я удалю функцию req.logIn, у меня не возникнет никаких проблем, и мое перенаправление выполнит эту работу.

Если я напишу свое перенаправление сразу после этой функции (с оператором await), оно все равно не будет работать. Я предполагаю, что logIn выполняет некоторую фоновую операцию, такую ​​как сохранение информации о пользователях в сеансе, но я не могу понять, в чем дело, поскольку я не вижу никаких ошибок в консоли, в то время как Chrome не возвращает никакого ответа. enter image description here

...