NodeJS express-валидатор с паспортом
Я пишу таблицу формы регистрации, и я использую passport-local
- это работа, но я хочу добавить express-validator
для проверки моих данных формы. Я добавляю проверку на маршрутизаторе, это мой код router/index.js
:
/* Handle Registration POST */
router.post('/signup', function(req, res) {
req.assert('email', 'A valid email is required').isEmail();
var errors = req.validationErrors();
if(errors){ //No errors were found. Passed Validation!
res.render('register', {
message: 'Mail type fault',
errors: errors
});
}
else
{
passport.authenticate('signup', {
successRedirect: '/home',
failureRedirect: '/signup',
failureFlash : true
});
}
});
Проверка является работой, но в случае успеха и тогда веб-страница будет загружаться в течение длительного времени и не отвечать. У меня есть поиск паспортного документа, но нет идеи, чтобы исправить это.
Это исходный код, это работа
/* Handle Registration POST */
router.post('/signup', passport.authenticate('signup', {
successRedirect: '/home',
failureRedirect: '/signup',
failureFlash : true
}));
Я думаю, что могу использовать jquery для проверки, но я этого не делаю. Потому что я просто хочу попробовать использовать валидатор с паспортом.3 ответа:
Выполнение проверки в LocalStrategy вместо маршрутизатора должно работать просто отлично:
passport.use('signup', new LocalStrategy({ passReqToCallback: true }, function(req, username, password, callback) { /* do your stuff here */ /* req.assert(...) */ }));
Ввод кода проверки в LocalStartegy должен работать, но лично я бы сначала сделал аутентификацию и после того, как она прошла, использовал паспорт.
Рассмотрим что-то следующее:
router.post('/login',function(req,res){ req.checkBody('username', 'Username is required').notEmpty(); req.checkBody('password', 'Password is required').notEmpty(); //validate var errors = req.validationErrors(); if (errors) { res.render('signup',{user:null,frm_messages:errors}); } else{ passport.authenticate('login',{ successRedirect:'/', failureRedirect: '/login', failureFlash : true })(req,res); // <---- ADDD THIS } });
/* Handle Registration POST */ router.post('/signup', checkEmail, passport.authenticate('signup', { successRedirect: '/home', failureRedirect: '/signup', failureFlash : true }); }); function checkEmail(req, res, next){ req.checkBody('username', 'Username is required').notEmpty(); req.checkBody('password', 'Password is required').notEmpty(); //validate var errors = req.validationErrors(); if (errors) { res.render('signup',{user:null,frm_messages:errors}); } else { next(); } }