Итак, у нас есть «веб-сервер» и сервер API - веб-сервер обслуживает HTML, а сервер API обслуживает JSON.Node.js Express - совместное использование сессий паспорта на разных серверах
Мы используем стратегию Twitter в Passport для аутентификации на сервере .
Мой вопрос: что является лучшим способом проверить на сервере API, что пользователь, прошедший аутентификацию с веб-сервера, также аутентифицирован с помощью API?
Мое предположение, что мы должны поставить большую часть кода паспорта на веб-сервере, есть пользователь аутентификации с ним, как обычно, с паспортом, и использование промежуточного ПО в API сервера, как так, чтобы проверить, является ли пользователь (имеет сеанс):
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. Я считаю, что мне нужно прочитать из того же хранилища сеансов, на который пишет веб-сервер, и посмотреть маркер в запросе на сервер API и сравнить его с токен в хранилище сеансов?
Я не уверен, что я понимаю, что делает функция req.isAuthenticated()? Кажется, мне теперь нужно написать свою собственную функцию req.isAuthenaticated(), которая асинхронно читает из хранилища сеансов ...
Есть ли у кого-нибудь пример того, как это сделать правильно?