У меня есть серверное приложение NodeJS (Koa), которое отображает страницы с сервера, то есть nunjucks/jade/etc. Страница входа также отображается сервером. После входа в систему создаются файлы cookie.NodeJS: Каков наилучший способ обмена сеансом между обработанными сервером видами и React app
Теперь я создаю приложение для реагирования, которое будет встроено в защищенную страницу (после входа пользователя в систему). Каков наилучший способ заставить это приложение реагировать на безопасные запросы Http/Websocket на сервер, используя текущий сеанс пользователя?
В настоящее время я вставляю sessionId в тег сценария страницы, представленный сервером, где загружается приложение React. Так что ...
Сервер:
var session = require('koa-generic-session');
app.use(session({
store: redisStore(...)
}));
app.use(function*(next) {
this.state.sessionIdFromServer = this.sessionId;
return yield next
});
Клиент:
<script>
var sessionId = {{sessionIdFromServer}};
</script>
...
<div id='app'> react app loads here </div>
Затем я использую, что SESSIONID переменная в моей стороне клиента HTTP/WebSocket запросов (в частности, WebSocket).
Для каждого запроса, сделанного клиентом (передача sessionId в случае сокетов), сервер в основном проверяет хранилище сеансов Redis, чтобы убедиться, что этот сеанс по-прежнему действителен (то есть не истек или вышел из системы) перед выполнением запроса.
Является ли это целесообразным/безопасным?