2017-09-30 1 views
0

Ich benutze Pass für die Autorisierung und ich speichern die Sitzung in Mongodb mit 'Connect-Mongo-Session' Modul. Ich habe bemerkt, dass nach einiger Zeit, wenn ich versuche, mich anzumelden, das Objekt req.user undefiniert wird, obwohl das Sitzungsobjekt in der Datenbank vorhanden ist und Pass- und Sitzungsdetails im req-Objekt vorhanden sind. Hier ist meine Session-Setup:Pass 'req.user' wird manchmal undefined manchmal

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

und hier ist der Code für die Serialisierung und:

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

Antwort

0

Ich konnte das Problem lösen, indem saveUninitialized zu falschen und erneut speichern, um falsch zu ändern, so sieht es aus wie folgt jetzt:

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