确保对承载和会话节点中间件都进行了记录

时间:2013-11-08 16:08:50

标签: node.js express passport.js

所以我有一个非常标准的节点快速设置,使用护照和承载(oauth-client-pass)和本地策略

我也使用connect-ensure-login作为标准 这是我的路线,第一个和第二个工作,因为他们应该第三个是我无法正确的那个

app.get('/admin', ensureLoggedIn(), index.admin);
app.get('/api/endpoint',passport.authenticate('bearer', { session: false }), index.endpoint);
app.get('/account', ensureLoggedInApi , index.account);

,其中

function ensureLoggedInApi(req, res, next) {
if(req.query.access_token)
    passport.authenticate('bearer', { session: false });
 else
    ensureLoggedIn();
next();
}

1 个答案:

答案 0 :(得分:2)

这两个函数都返回一个中间件处理程序,所以你首先需要调用它们(产生中间件处理程序),然后调用处理程序本身:

function ensureLoggedInApi(req, res, next) {
  if (req.query.access_token) {
    passport.authenticate('bearer', { session: false })(req, res, next);
  } else {
    ensureLoggedIn()(req, res, next);
  }
}