2

NodeJS、Express、および PassportJS を使用して Web アプリケーションを構築しています。ルートの 1 つに問題があり、意味がわかりません。私が持っているとき:

...
app.get('/auth/facebook', passport.authenticate('facebook'));
...

すべてがうまくいくようです。しかし、それを次のように変更すると:

...
app.get('/auth/facebook',
  function(req, res) {
    passport.authenticate('facebook');
  });
...

ハングしますか?app.get 関数で何か不足していますか? どのパスポートが認証されるかを決定するパスをもう少し動的にしたいので、これを実行できるようにしたいと考えています。例えば:

...
app.get('/auth/:provider',
  function(req, res) {
    passport.authenticate(req.params.provider);
  });
...

provider はfacebooktwitter、またはgoogle...

4

1 に答える 1

7

Passport.authenticate はミドルウェアです。ソースを見てみましょう: https://github.com/jaredhanson/passport/blob/master/lib/passport/middleware/authenticate.js

Passport.authenticate('facebook') は、express から req、res、next パラメーターを受け取り、それらを処理する関数を返します。

それで:

app.get('/auth/:provider',
  function(req, res, next) {
    passport.authenticate(req.params.provider)(req, res, next);
  });

必要なものです。

于 2013-03-16T08:10:49.200 に答える