0

次の例を参照しています。

https://github.com/jaredhanson/passport-local/blob/master/examples/login/app.js

具体的には、次のコード:

app.post('/login', 
  passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }),
  function(req, res) {
    res.redirect('/');
  });

投稿されたコードは問題なく動作します。ただし、次のようにしてリファクタリングしようとすると:

app.post('/login', 
  authenticate,
  function(req, res) {
    res.redirect('/');
  });

function authenticate() {
    return passport.authenticate('local', { failureRedirect:'/fail', failureFlash:true });
}

物事はもう機能しません。私は何を間違っていますか?

4

1 に答える 1

1

authenticate()関数を実行してミドルウェアを返すには、(括弧を使用して)呼び出す必要があると思います。例えば:

app.post('/login', 
  authenticate(),
  function(req, res) {
    res.redirect('/');
  });

現在設定している方法では、認証はルートハンドラーとしてインストールされるため、express はreq,res引数 (使用も応答もされていません) を使用して呼び出しています。

于 2012-05-07T01:56:33.717 に答える