Я несколько запутался в том, как сделать пост запрос и аутентификацию пользователя с показом сообщений об ошибках.
Мой текущий код:
-роут
router.post('/login', (req, res, next)=>{
passport.authenticate('local', {
successRedirect : '/admin',
failureRedirect : '/login',
failureFlash : true
})(req, res, next);
-стратегия с флэш сообщенями
module.exports = passport => {
passport.use(new LocalStrategy({
usernameField : 'login'
},
(login, password, done) => {
//match user
User.findOne({
login : login
})
.then(user => {
if(!user){
return done(null, false, {message : 'no user found'});
}
//match passwords
bcrypt.compare(password, user.password, (err, isMatch)=>{
if (err) throw err;
if (isMatch) {
return done(null, user);
} else {
return done(null, false, {message : 'password incorrect'});
}
})
})
.catch(err => console.log(err));
}
));
passport.serializeUser(//more code);
passport.deserializeUser(//more code);
});
- аякс
$.ajax({
type: "POST",
url: "/login",
data: formData,
processData: false,
contentType: false,
success : function(data) {
console.log(data);
},
})
Перерыл весь стэковерфлоу, в качестве ответа часто встречается xто-то подобное, но у меня все равно не выходит показать ошибки в форме.
app.post('/login', function(req, res, next) {
passport.authenticate('local', function(error, user, info) {
if(error) {
return res.status(500).json(error);
}
if(!user) {
return res.status(401).json(info.message);
}
res.json(user);
})(req, res, next);
});