0

Route Middleware で Passport JS Bearer Authentication を使用する NodeJS で記述された次のコードがあります。

app.put('/api/customers/:id', passport.authenticate('bearer', {session : false}),      handlers.putCustomers);
app.put('/api/products/:id', passport.authenticate('bearer', {session:false}), handlers.putProducts);

すべてのエンドポイントに使用する代わりに、passport.authenticateこれをすべてのエンドポイントにグローバルに適用したいと考えています。

うまくいかないミドルウェアの次の順序で試しました

var app = express();
app.use(bodyParser());
app.use(session({ store: new RedisStore({client:client}),secret: 'keyboard cat' }));
app.use(passport.initialize());
passport.use(new BearerStrategy(){....

app.use(passport.authenticate('bearer', {session:false}));

app.put('/api/customers/:id',  handlers.putCustomers);
app.put('/api/products/:id', handlers.putProducts);

エンドポイントにヒットすると 401 が返されます..「PUT」ではなく「OPTIONS」タイプで表示されますが、それが役立つか意味がある場合は.(chrome を使用してアプリの UI からエンドポイントをテストします)。

4

1 に答える 1

1

私の質問に答える:ここで述べたように、ワイルドカードルートを使用してこれを解決できました: app.use()

app.put("/api/*",passport.authenticate('bearer', {session:false}));
于 2014-07-30T07:59:11.483 に答える