2017-09-30 1 views
0

J'utilise le passeport pour l'autorisation et j'enregistre la session dans mongodb en utilisant le module 'connect-mongo-session'. J'ai remarqué qu'après un certain temps lorsque j'essaie de me connecter, l'objet req.user devient indéfini, bien que l'objet session soit présent dans la base de données et que les détails du passeport et de la session soient présents dans l'objet req. Voici ma configuration de session:'req.user' de passeport devient indéfini parfois

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()); 

et voici le code responsable de la sérialisation et:

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); 
    }); 
}); 

Répondre

0

j'ai pu résoudre le problème en changeant saveUninitialized false et resave false, il semble comme ceci maintenant:

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