我有以下用NodeJS编写的代码,它在路由中间件中使用Passport JS持有者身份验证。
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分..我看到它是'OPTIONS‘类型的,而不是'PUT’类型的,如果这有帮助或有意义的话(使用chrome从我的应用程序的UI测试我的端点)。
发布于 2014-07-30 07:59:11
回答我的问题:我设法通过使用这里提到的通配符路由解决了这个问题:app.use()
app.put("/api/*",passport.authenticate('bearer', {session:false}));
https://stackoverflow.com/questions/25031052
复制