所以我们有一个“web”服务器和一个API服务器 - 网络服务器提供HTML,API服务器提供JSON。Node.js Express - 在不同服务器上共享Passport会话
我们使用Passport的Twitter策略在网络服务器上进行身份验证。
我的问题是 - 什么是检查API服务器的最佳方法是,用Web服务器进行身份验证的用户也使用API进行身份验证?
我的假设是我们应该将大部分Passport代码放入Web服务器,让用户像往常一样使用Passport进行身份验证,并使用服务器中的某些中间件来检查用户是否登录(有会话):
app.use(passport.initialize());
app.use(passport.session());
app.use(expressSession({
secret: 'keyboard cat',
store: new MongoStore({mongooseConnection: mongoose.connection})
}));
app.use(function(req,res,next){
if(req.isAuthenticated()){
next();
}
else{
console.log('unauthenticated request');
res.status(403).json({error:'unauthorized request'});
}
});
但是,上述似乎不够。我完全困惑于API服务器上需要的代码 - 我相信我需要从相同的会话存储中读取Web服务器写入并在API服务器的请求中查看令牌,并将其与会话存储中的令牌?
我不知道我明白req.isAuthenticated()函数的作用是什么?似乎我现在需要编写自己的req.isAuthenaticated()函数,它可以异步地从会话存储区读取数据...
有没有人有如何做到这一点的例子?