Эта аутентификация отлично работает
app.post('/login', passport.authenticate('local-login', {
successRedirect: '/home',
failureRedirect: '/login',
failureFlash: true
})
);
но я пытаюсь проверить поля формы перед аутентификацией с помощью экспресс-валидатора.
Я пришел с этим
app.post('/login', function(req, res){
req.checkBody('email', 'Email is required').notEmpty();
req.checkBody('email', 'Email is not valid').isEmail();
req.checkBody('password', 'Password is required').notEmpty();
var validationErr = req.validationErrors();
if (validationErr){
res.render('login', {
errors: validationErr,
failureFlash: true
});
} else {
// authenticate once fields have been validated
passport.authenticate('local-login', {
successRedirect: '/home',
failureRedirect: '/login',
failureFlash: true // allow flash messages
})
}
});
Используя этот второй код, ничего не происходит, когда я отправляю форму, и клиент выдает сообщение об ошибке localhost не отправил данные через некоторое время. Первая часть работает нормально, я вижу все ошибки, когда я отправляю пустую форму и достигается метод аутентификации. Я подозреваю, что этот вопрос может частично ответить на мой или имеет отношение к теме, но я не могу этого понять.
В документации passport.js приведен пример с функцией, но функция вызывается только при успешной аутентификации, то есть после. Я хотел бы выполнить проверку поля перед проверкой подлинности.
Дайте мне знать, если вам нужен код passport.authenticate.