代码之家  ›  专栏  ›  技术社区  ›  Erik

当电子邮件或密码为空时,不会调用Passport本地策略

  •  2
  • Erik  · 技术社区  · 10 年前

    我使用以下passportjs LocalStrategy:

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

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

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

    1 回复  |  直到 10 年前
        1
  •  3
  •   r0-    10 年前

    你可以使用 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....
    }
    

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