0

node.js で Web アプリケーションを開発しており、認証にパスポート ( http://passportjs.org/ ) を使用しています。私はすべてのパスポートコードを app.js ファイルに入れましたが、それはかなりうまくいきました...いくつかのリファクタリングステップで、すべてのパスポートコードを authentication.js と呼ばれる独自のファイル/モジュールに入れることにしました。ここに私の問題があります:

app.js には、次の「ミドルウェア」コードがあります。

app.configure(function(){
   ...
   app.use(passport.initialize());
   app.use(passport.session());
}

私はそのようなものに置き換えたい:

var auth = require('./authentication.js');
app.configure(function(){
   ...
   app.use(auth.initialize(app));
}

しかし、実際には auth.initialize がどのように見えるべきかわかりません。

私はそのようなことを試しました:

function initialize(app){
   return function(res,req,next){
      app.use(passport.initialize(res,req, next));
      app.use(passport.session(res,req, next));
      next();
}

しかし、成功せずに... :-(

誰でもこの問題について何か考えがありますか?

前もって感謝します...

4

1 に答える 1

0

これはどう?

// app.js
var auth = require('./authentication.js');
app.configure(function(){
   ...
   auth.initialize(app);
});

// authentication.js
module.exports.initialize = function(app) {
  app.use(passport.initialize());
  app.use(passport.session());
};

Passport が依存する他のミドルウェア (express.sessionや などexpress.cookieParser) が、Passport の前に構成されていることを確認してください。

于 2013-03-01T12:15:26.227 に答える