0
ユーザー名またはパスワードなしでログインしようとすると、私のpassport.use
関数がまったく呼び出されないという問題があります。フィールドが空の場合、Passport.jsがLocalStrategyを呼び出さない
以下は、passport.authenticate
を実行している私のエクスプレスポストルートです。
app.post('/login', passport.authenticate('local-login', {
failureRedirect: '/login', // redirect back to the login page if there is an error
failureFlash: true // allow flash messages
})
以下/login
にポスト要求があるたびにGOT HERE
を印刷する必要があり、私のpassport.use
です。
passport.use('local-login', new LocalStrategy({
// by default, local strategy uses username and password, we will override with email
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true // allows us to pass back the entire request to the callback
},
function(req, email, password, done) { // callback with email and password from our form
// find a user whose email is the same as the forms email
// we are checking to see if the user trying to login already exists
console.log("GOT HERE");
email
とpassword
が値、いくつかのタイプを持っている場合、これは正常に動作します。しかし、私はカスタムエラー処理を行うことができるようにemail
とpassword
の値がなくてもこの関数を呼びたいと思います。
どうすればこの問題を解決できますか?
を扱ういくつかのカスタムエラーを行うことができますが、それは実際にそれを行うための最善の方法は何ですか?現在、私のエラー処理はすべてパスポート機能にあります。それを分けるのは直感的ではないようです。あなたはここにソースコードから見つけることができます –
: '行うauthenticate'機能がpassowrdがあるかどうかを確認されていること https://github.com/jaredhanson/passport-local/blob/f82655aa220ad7d0fcd8b114a0303d3cf94b8d06/lib/strategy.js#L71 最初のものをおよびユーザー名フィールド。だから私はそれが最も簡単な方法だと言います。 –
@CharlieFishこれは「パスポートローカル」の仕組みです。カスタム動作が必要な場合は、['passport-custom'](https://github.com/mbell8903/passport-custom)のような戦略を使用できます。 – robertklep