私はnode.jsおよびexpress.js noobです。この質問はばかげているように見えるかもしれませんが、私は本当に混乱しています。
passport を使用して Local Strategry 認証を設定しようとしています。公式ドキュメントに示されているように、次のコードでこのローカル戦略を理解できます。
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
私の混乱は、done
コールバック関数に関するものです。公式ドキュメントがルートハンドラーでミドルウェアとして使用するこのローカル戦略を示している場合、このdone
コールバックの関数パラメーターを渡す必要はありません。
app.post('/login',
passport.authenticate('local'),
function(req, res) {
res.redirect('/');
});
関数パラメーターを指定しない場合、このdone
コールバック関数はnullになりませんか?そうでない場合、そのdone
コールバック関数は何であり、どのプロセスがこのdone
コールバック関数で行われますか?
done
はメソッドです 戦略の実装によって内部的に呼び出されます 。
次に、ご覧のとおり、success
/error
/fail
メソッドの1つにナビゲートします(これも実装によって異なります。 その他のオプションがあります )。これらの各オプションは、 calls にnext
を指定できます。スニペットコードでは次のとおりです。
function(req, res) {
res.redirect('/');
});
success
が呼び出されると、 ユーザーをリクエストにアタッチできます または必要に応じて他のことを行います(options
を探してpassport.authenticate
)。 next
がいつ呼び出されるかを決定する場合は、 custom callback
を使用する必要があります。これにより、柔軟性が向上します。
ソースを読むことを強くお勧めします。