我在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>
答案 0 :(得分:1)
回答我的问题:我设法通过使用这里提到的通配符路由来解决这个问题: app.use()
app.put("/api/*",passport.authenticate('bearer', {session:false}));