У меня есть маршрут в узле, который обрабатывает аутентификацию с использованием паспорта
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 происходит, но с этим он не делает. Это странно
Почему существует разница в двух звонках?
Обновление -------------
Я не смог найти данные в запросе на сервере, который я отправлял со страницы входа в систему, т. Е. Адрес электронной почты и пароль.