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 エントリ ポイントでそれを必要として使用するだけです。

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 に答える