3

Node.js API アプリの Passport で Express を使用しています。 に渡す{session:false}ことpassport.authenticateでセッションを無効にできますが、600 回繰り返さないように 1 か所でこれを行う方法はありますか?

var app = express();

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

app.get('/users', passport.authenticate('hash', {session:false}), controllers.users.getAll);
app.get('/users/me', passport.authenticate('hash', {session:false}), controllers.users.getCurrentUser);
// and so on...

私ができることは素晴らしいことです:

app.donotuse(sessions).thanks();
4

3 に答える 3

5

結果を変数に保存して再利用するだけです。

var PassportAuthenticateMiddleware = passport.authenticate('hash', {session:false});
...
app.get('/users',    PassportAuthenticateMiddleware, controllers.users.getAll);
app.get('/users/me', PassportAuthenticateMiddleware, controllers.users.getCurrentUser);

(または、@hexacyanideが提案するようにして、ミドルウェアをグローバルに使用します。それがセットアップのオプションである場合)

または、次のようなものを使用できます。

app.all('/users*',   passport.authenticate('hash', {session:false}));
app.get('/users',    controllers.users.getAll);
app.get('/users/me', controllers.users.getCurrentUser);

これにより、認証ミドルウェアを介して実行されるURL が で始まるすべての要求が (.allユーザーが使用する代わりに) フィルター処理されます。.get/users

于 2013-11-03T20:49:03.320 に答える
3

オーセンティケータ自体はミドルウェアです。したがって、グローバルに割り当てることができます。

app.use(express.bodyParser());
app.use(passport.initialize());
app.use(passport.authenticate('hash', {session:false}));
于 2013-11-03T20:48:40.753 に答える