2017-12-22 14 views
0

私のノード/エクスプレスアプリでの認証にPassport.jsを使用しています。入力フィールドが空のときにパスポートにデフォルトメッセージ「Missing credentials」が表示されます。Passport.jsデフォルトのエラーメッセージを変更

passport.use('login', new LocalStrategy({ 
     usernameField: 'email', 
     passwordField: 'password' 
    }, 
    function(email, password, done) { 
     models.User.findOne({where: {email}}).then(user => { 
     if (!user) 
      return done(null, false, {message: 'Email not registered'}); 
     user.checkPassword(password).then(res => { 
      if (!res) 
      return done(null, false, {message: 'Incorrect username or password'}); 
      return done(null, user); 
     }); 
     }); 
    })); 

ログインルート:何かのようなフォームまたは

ここで何かのログインのための私の地元の戦略記入してくださいと言って、

router.post('/login', passport.authenticate('login', { 
    successRedirect: '/', 
    failureRedirect: '/login', 
    failureFlash: true 
})); 
+0

のようになります。 !メール&&!パスワード)return done(null、false、{メッセージ: "Missing credentials"}) ' – oneturkmen

+0

' models.User.findOne ... '行の前で試してください – oneturkmen

+0

私はすでにそれが動作しませんでした – void

答えて

0

私はそれを得たことは、私はにオプションのコールバックを渡すことができようになります。デフォルト関数をオーバーライドするために関数を認証する。参考にしていただきありがとうございます。ここ

が変更されていますルート:

router.post('/signup', (req, res) => { 
    passport.authenticate('signup', (err, user, info) => { 
    const body = req.body; 
    if (req.body.username === '' || req.body.email === '' || req.body.password === '') 
     info.message = 'Please fill the form'; 
    req.logIn(user, err => { 
     if (err) res.render('users/signup', info); 
     else res.redirect('/'); 
    }); 
    })(req, res); 
}); 
0

選択肢があるが、あなたのコードに "badRequestMessage" を追加し

あなたのコードがあればあなたが( `試すことができ、この

router.post('/login', passport.authenticate('login', { 
    successRedirect: '/', 
    failureRedirect: '/login', 
    badRequestMessage : 'Please fill the form', 
    failureFlash: true 
})); 
関連する問題