2017-09-30 19 views
0

我正在使用護照進行授權,我正在使用'connect-mongo-session'模塊將會話保存在mongodb中。我注意到,在嘗試登錄後,req.user對象變得未定義之後,儘管session對象存在於數據庫中,並且req對象中存在通行證和會話詳細信息。這裏是我的會話設置:護照的'req.user'有時變得不明確

let store; 

if(env === "development") 
    store = new MongoDBStore({ //Allows session to be stored and retreived even when server restarts. 
    uri: config.db, 
    collection: 'mySessions' 
    }) 

else { 
    store = new MongoDBStore({ //Allows session to be stored and retreived even when server restarts. 
    uri: config.db, 
    collection: 'Cosmos' 
    }) 
} 

    app.use(session({ 
    store: store, 
    saveUninitialized: true, 
    resave: true, 
    secret: config.app.sessionSecret 
    })); 

    app.use(passport.initialize()); 
    app.use(passport.session()); 

這裏是代碼負責序列化和:

passport.serializeUser((user, done) => { 
    done(null, user.id); 
}); 

// Use Passport's 'deserializeUser' method to load the user document 
passport.deserializeUser((id, done) => { 
    User.findOne({ 
     _id: id 
    }, '-password -salt', (err, user) => { 
     done(err, user); 
    }); 
}); 

回答

0

我能夠通過改變saveUninitialized爲false來解決問題,並重新保存爲false,所以它看起來像現在這樣:

app.use(session({ 
     store: store, 
     saveUninitialized: false, 
     maxAge: 1000 * 60 * 60 * 84, // I added this just in case 
     resave: false, 
     secret: config.app.sessionSecret 
    }));