mongodb - req.user being set to first user in database when trying to log in // Express, Node.js -


i'm working on application using node.js express framework, using passport user authentication , mongodb storage. i'm having trouble figuring out why no matter user tries log in, server decides logged-in user first user in database, i.e. first user signed up.

when server receives post request /login, runs passport.authenticate authenticate user's credentials. logging out console, it's clear proper user credentials passed through, , session id correct, wherever req.user set, being set wrong user.

here log in console of what's happening give idea:

get /user --req.user { salt: '$2a$10$ngpcbpvuqgq32iowvschd.',   hash: '$2a$10$ngpcbpvuqgq32iowvschd.syva2e/aapsfucdn65arm/d1oyjb3ty',   username: 'daniel',   email: 'dan@dan.com',   _id: 515decd49fc3204ca1000001,   __v: 0,   songs: [] } --req.session { cookie:    { path: '/',      _expires: null,      originalmaxage: null,      httponly: true },   passport: { user: '515decdc9fc3204ca1000002' },   flash: {} } 

as can see, user id correct in req.sessions incorrect in req.user.

the full code available here: https://github.com/patrickmestabrook/song-swap

i guess serialize/deserialize process. have tried using _id.tostring() in serializeuser method?

have verified correct user being returned inside models.js?

schemas.user.static('authenticate', function( username, password, done) {   console.log('schemas.user.static.authenticate');   console.log('-username ' + username);   console.log('-password ' + password);     this.findone({ username: username }, function( err, user ) {     console.log('this.findone inside authenticate, callback');     console.log('user.username ' + user.username);      if ( err   ) return done( err );     if ( !user ) return done( null, false );     user.verifypassword( password, function( err, passwordcorrect) {         if ( err ) return done( err );       if ( !passwordcorrect ) { return done( null, false ); }       // return done( null, user );       done ( null, user );     })   }) }) 

also check correct username , password being passed authenticate method

passport.use(new localstrategy(function( username, password, done ) {     console.log('username: ' + username)   console.log('password: ' + password)   models.user.authenticate( username, password, function( err, user) {     // right now, reports wrong user dammit     console.log('models.user.authenticate callback');     console.log('--username ' + user.username);     // return done( err, user );     done( err, user);   });  })); 

Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -