Экспресс сессия не хранит свои данные - PullRequest
0 голосов
/ 20 июня 2019

У меня есть веб-приложение mern, и я использую экспресс-сессию. Проблема в том, что данные cookie не сохраняются, когда я пытаюсь получить их по другому маршруту. Он устанавливается и выводится правильно на том же маршруте, но когда я иду на другой маршрут и пытаюсь получить данные сеанса, он возвращает undefined.

Что странно, так это то, что сеанс сохраняется в mongodb, но я не могу его восстановить.

Что я делаю не так и как я могу это исправить?

Вот соответствующий код:

Session.js

const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const mongoose = require('mongoose');

module.exports = function(app) {
    var sess = {
        secret: 'mySecret',
        cookie: { token: null },
        saveUninitialized: false,
        resave: true,
        store: new MongoStore({ mongooseConnection: mongoose.connection })
    };

    if (app.get('env') === 'production') {
        app.set('trust proxy', 1);
        sess.cookie.secure = true;
    }

    app.use(session(sess));
};

Route.js

module.exports = function(app) {
    app.use(cors());
    app.use(helmet());
    require('../middleware/session')(app);
    // Other routes...
};

File1

router.post('/', async (req, res) => {
    req.session.token = 'hello';
    console.log(req.session.token); // Outputs 'hello'
    res.send(req.session.token);
});

File2 Это вызывается после перезагрузки страницы

router.get('/me', async (req, res) => {
    console.log(req.session.token); // Outputs undefined
    console.log(req.session);
// Outputs: "Session {
// cookie: { path: '/',                                                    
// _expires:null,
// originalMaxAge: null,
// httpOnly: true }
// }

    res.send(req.session.token);
});

1 Ответ

0 голосов
/ 22 июня 2019

Вы должны добавить приведенный ниже код в файл app.js

var cookieParser = require('cookie-parser');
var session = require('express-session');

app.use(cookieParser());
app.use(session({secret: "Funny secret"}));

Это простой способ сделать это. Затем вы сможете назначать и получать доступ к значениям объекта req.session .

...