Node.js Passport本地策略在电子邮件或密码为空时未被调用

Node.js Passport本地策略在电子邮件或密码为空时未被调用,node.js,authentication,express,passport.js,passport-local,Node.js,Authentication,Express,Passport.js,Passport Local,我使用以下passportjs LocalStrategy: passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'password' }, function(username, password, done) { // ... } )); 如果我在POST请求中提供电子邮件和密码属性,所有这些都可以正常工作。但是,如果其中一个为空,则不会执行该中间件,而是发生重定向 我需要知道发生

我使用以下passportjs LocalStrategy:

passport.use(new LocalStrategy({
  usernameField: 'email',
  passwordField: 'password'
},
  function(username, password, done) {
  // ...
  }
));
如果我在POST请求中提供电子邮件和密码属性,所有这些都可以正常工作。但是,如果其中一个为空,则不会执行该中间件,而是发生重定向

我需要知道发生了什么,并将req.flash传递给客户端以处理此异常。我怎么做呢?

你可以用。它可以检查您的电子邮件/密码字段是否为空

只需在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....
}

然后做你的护照之类的事情,比如登录或注册。

谢谢你的回复。但您的方法适用于所有请求。是否可以将其仅应用于登录路线?是的,当然!我在回答中提到,您只能/应该在注册路线中使用它,但我编辑了我的回答,添加了完整的post路线。只需在你的注册后使用它。