Passport.jsを使用して、同じルートに複数の認証プロバイダーを指定する方法はありますか?
たとえば、(パスポートのガイドから)以下のサンプルルートでローカルおよびFacebookおよびTwitterの戦略を使用できますか。
app.post('/login',
passport.authenticate('local'), /* how can I add other strategies here? */
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect('/users/' + req.user.username);
});
Passportのミドルウェアは、1つのpassport.authenticate(...)
呼び出しで複数の戦略を使用できるように構築されています。
ただし、OR順序で定義されます。これは、どの戦略も成功を返さなかった場合にのみ失敗します。
これはあなたがそれを使用する方法です:
app.post('/login',
passport.authenticate(['local', 'basic', 'passport-google-oauth']), /* this is how */
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect('/users/' + req.user.username);
});
言い換えれば、それを使用する方法は、ユーザーが認証する戦略の名前を含む配列を渡すことです。
また、実装する戦略を事前に設定することを忘れないでください。
この情報は、次のgithubファイルで確認できます。