Экспресс-сессия не будет сохраняться, даже если MongoStore использует connect-mongo
Когда я перезагружаю свой сервер, моя сессия заканчивается, и я выхожу из системы. Это не происходит при регулярном обновлении страницы. Я использую Connect-Mongo, чтобы исправить это:
var session = require('express-session');
const MongoStore = require('connect-mongo')(session);
Вот код, который я использую для хранения моего сеанса, повторного использования существующего подключения Mongo, называемого thisDb
:
app.use(session({
secret: secretHash,
saveUninitialized: true,
resave: true,
secure: false,
store: new MongoStore({ db: thisDb })
}));
Во время успешного входа:
var day = 60000*60*24;
req.session.expires = new Date(Date.now() + (30*day));
req.session.cookie.maxAge = (30*day);
В моей оболочке Mongo я могу убедиться, что новый сеанс создается при входе в систему:
db.sessions.find()
{"cookie":{"originalMaxAge":2592000000,"expires":"2017-11-17T20:36:12.777Z","httpOnly":true,"path":"/"},"user":{"newNotifications":false,"username":"max","admin":"true","moderator":"true"},"expires":"2017-11-17T20:36:10.556Z"}
0 ответов
Ну, почти 3 года спустя у меня возникла эта проблема. Не знаю, использовал ли OP Passport, но я решил эту проблему, переместив эти функции изнутри функции passport.use за пределы:
passport.serializeUser(function(user, done){
done(null,user.id);
});
passport.deserializeUser((id,done) => {
User.findById(id, (err,user) => {
done(null,user);
});
});