我写了一个注册表单表,我使用 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
});
}
});
验证成功,但如果成功,网页将加载很长时间没有响应。我已经搜索了 Passport 文档,但不知道如何修复它。
这是源代码,它的工作
/* Handle Registration POST */
router.post('/signup', passport.authenticate('signup', {
successRedirect: '/home',
failureRedirect: '/signup',
failureFlash : true
}));
我觉得我可以用jquery来查,但是我没有这么做。因为我只想尝试将验证器与 Passport 一起使用。
最佳答案
将验证码放入 LocalStartegy 应该可以,但我个人会先进行身份验证,一旦通过就使用 Passport 。
考虑以下内容:
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
}
});
关于node.js - 带 Passport 的 NodeJS 快速验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27056195/