res.redirect никогда не работает в NodeJS с express и паспортом - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть этот простой код, часть POST которого в значительной степени соответствует паспортной документации:

  authRouter.route('/signIn').get((req, res) => {
    res.render('signIn', {
      nav,
      props,
      title: 'Sign In'
    });
  })
  .post(passport.authenticate('local'), function(req, res) {
    debug(`${chalk.redBright('authenticated')}`);
    // If this function gets called, authentication was successful.
    // `req.user` contains the authenticated user.
    res.redirect('/auth/profile');
    
  });

Но независимо от ответа HTTP (200, 304 и т. Д. 1021 *), на самом деле никогда не перенаправляет. Я также пытался использовать методы successRedirect и faultRedirect с одинаковым результатом.

Вот мой маршрут для auth / profile:

  authRouter.route('/profile')
    .all((req, res, next) => {
      if (req.user) {
        next();
        debug(req.user)
      } else {
        res.redirect('/');
      }
    })
    .get((req, res) => {
      res.json(req.user);
    });

  return authRouter;
}

В этом случае res.redirect работает отлично.

Это в Windows, но у меня есть почти идентичная реализация в проекте Ubuntu, который Кажется, работает нормально. Я уверен, что что-то есть c Я не понимаю здесь, но я смотрел на это в течение многих дней, и я просто не могу понять это. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 25 апреля 2020

Хорошо, спасибо за ответы. Я понял это, и я чувствую себя действительно глупо. Я использовал шаблон Bootstrap, который прикреплял скрипт как часть класса CSS. Я даже не знал, что ты можешь сделать это. Так что, хотя я делал прямую публикацию в форме, похоже, что скрипт выполнял вызов XHR, и, вероятно, именно поэтому это выглядело так, и два человека предложили это. Я действительно ценю ответы. Было довольно сложно увидеть, что происходит. Похоже, что Firefox все еще лучше для отладки.

...