2

我使用以下passportjs LocalStrategy:

passport.use(new LocalStrategy({
  usernameField: 'email',
  passwordField: 'password'
},
  function(username, password, done) {
  // ...
  }
));

如果我在 POST 请求中提供电子邮件和密码属性,一切正常。但是如果其中一个是空的,那么这个中间件不会被执行,而是会发生重定向。

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

4

1 回答 1

3

您可以使用express-validator。它通常可以检查您的电子邮件/密码字段是否为空。

只需在你的 app.js 入口点 require 并使用它:

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....
}

然后做你护照的东西,比如登录或注册。

于 2014-08-09T16:53:15.510 回答