Экспресс-сессия - не определена в других маршрутах

В моем приложении я хочу сохранить сеанс, когда конкретное событие происходит на стороне клиента. Я использую эту функцию на стороне клиента:

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()... Ничего не работает. Есть ли у вас какие-либо идеи? Если вам нужна дополнительная информация, пожалуйста, напишите комментарий

0 ответов

Другие вопросы по тегам