Аксиос после звонка не завершается - PullRequest
0 голосов
/ 25 августа 2018

У меня есть маршрут в узле, который обрабатывает аутентификацию с использованием паспорта

app.post('/auth/local', 
  bp.urlencoded({ extended: true }), 
  passport.authenticate('local', { failureRedirect: '/xyz' }), 
  (req, res) => {
    console.log('coming')
    req.body = null;
    UserLogin.findByToken(req.user)
    .then((user) => {
      if(!user.uid){
        res.redirect(`/newuser/${user.id}/auth/${user.loginType}/complete`);
      }
      else{
        setLoggedInInfo(req.user, res, user.id);

      }
    })
    .catch((e) => {
      res.redirect('/error');
    })
});

Паспортная стратегия

passport.use(new LocalStrategy({
        usernameField: 'email',
        passwordField: 'password'
      },
        function(email, password, done) {
          console.log("Called Here");
          UserLogin.findByCredentials(email, password)
          .then((user) => {
            return user.generateAuthToken();
          })
          .then((token) => {
            done(null, token);
          })
          .catch((err) => {
            console.log('User not found');
            done(null);
          })
        }
      ));

Раньше я пользовался формой после звонка, и все работало успешно

<form action="/auth/local" method="post" >
          <div>
            <label>Email ID</label>
            <input name="email" type="text" placeholder="Email ID" />
          </div>
          <div>
            <label>Password</label>
            <input name="password" type="password" placeholder="Password" />
          </div>
          <div>
            <button>Login</button>
          </div>
        </form>

В этом случае каждый бит работал нормально. Для проблемы я изменил способ моего почтового звонка, тогда я обнаружил, что почтовый звонок не происходит. Для этого я использовал onSubmit.

<form onSubmit={this.handleSubmit} >

handleSubmit = (e) => {

    e.preventDefault();
    const email = e.target.elements.email.value;
    const password = e.target.elements.password.value;
    console.log(email, password);
    axios.post('/auth/local', {email: email, password: password })
    .then((res) => {
      console.log(res);
    })
    .catch((e) => {
      console.log(e);
    })
  }

Я нашел путем отладки, что если я удаляю passport.authenticate('local', { failureRedirect: '/xyz' }), вызов API происходит, но с этим он не делает. Это странно

Почему существует разница в двух звонках?

Обновление ------------- Я не смог найти данные в запросе на сервере, который я отправлял со страницы входа в систему, т. Е. Адрес электронной почты и пароль.

...