我使用以下passportjs LocalStrategy:
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(username, password, done) {
// ...
}
));
如果我在POST请求中提供电子邮件和密码属性,则一切正常。但如果其中一个是空的,则此中间件不会被执行但重定向发生。
我需要知道发生了什么,并将req.flash传递给客户端来处理此异常。我怎么能这样做?
答案 0 :(得分:3)
您可以使用express-validator。它可以检查您的电子邮件/密码字段,一般它们不是空的。
只需要在app.js入口点中使用并使用它:
var expressValidator = require('express-validator');
app.use(bodyParser());
app.use(expressValidator()); // then let the app use it, place it HERE after the bodyParser()
并在您的登录/注册路线中:
router.post('/signup', function (req, res) {
req.assert('email', 'Email is not valid!').isEmail();
req.assert('password', 'Password is empty!').notEmpty();
var err = req.validationErrors();
if (err) {
req.flash('errors', errors);
return res.redirect('/login');
}
// Your passport here....
}
然后办理登录或注册等护照。