使用Passport JS Bearer在全球范围内进行身份验证

时间:2014-07-30 07:28:29

标签: node.js express passport.js restful-authentication bearer-token

我在NodeJS中编写了以下代码,在路由中间件中使用Passport JS Bearer身份验证。

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中测试我的端点)。< / p>

1 个答案:

答案 0 :(得分:1)

回答我的问题:我设法通过使用这里提到的通配符路由来解决这个问题: app.use()

app.put("/api/*",passport.authenticate('bearer', {session:false}));