Экспресс-сессия не будет сохраняться, даже если 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);
    });
});
Другие вопросы по тегам