所以我有一个非常标准的节点快速设置,使用护照和承载(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();
}
答案 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);
}
}