Экспресс-сессия - не определена в других маршрутах
В моем приложении я хочу сохранить сеанс, когда конкретное событие происходит на стороне клиента. Я использую эту функцию на стороне клиента:
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", '/saveSession/' + data, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState === 4) {
if (xmlhttp.status === 200) {
} else {
reject(xmlhttp.statusText);
}
}
};
xmlhttp.send();
resolve()
И на сервере я сохраняю сессию:
router.post('/saveSession/:data', function (req, res, next) {
const data = req.params.data;
mySpecialFunction(data)
.then(function (decodedData) {
var info = decodedData.info;
req.session.info = info;
req.session.save();
res.end();
}).catch(function (error) {
req.session.info = '';
res.redirect('/login');
});
})
И настройки моего сервера:
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const session = require('express-session');
const app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
//Body parser setup
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
//Session setup
app.use(session({
secret: 'secret:D',
resave: true,
saveUninitialized: false,
cookie: { secure: false }
}))
//routes
const main = require('./source/main');
app.use('/', main);
Вопрос: Как я могу сохранить сеанс в этом конкретном случае и получить к нему доступ по разным маршрутам? Я знаю, что мне нужно завершить запрос, когда я использую POST, поэтому я попытался req.session.save() и res.send() и req.end()... Ничего не работает. Есть ли у вас какие-либо идеи? Если вам нужна дополнительная информация, пожалуйста, напишите комментарий