У меня есть веб-приложение 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);
});