Session not storing in Express for Node.js -


i have following route acts on post login form. problem when login success (member found , passwords match), member._id not stored in session.

my route:

app.post('/signin', function(req, res) {     member.findone({username: req.body.username}, function(error, member) {         var matchpassword = crypto.createhmac('sha1', member.salt).update(req.body.password).digest('hex');         if(member.password == matchpassword) {             req.session.member_id = member._id;             res.redirect('/' + member.username);         }     });     res.redirect('/'); }); 

i following error in console when route fired:

node.js:134         throw e; // process.nexttick error, or 'error' event on first tick         ^ error: can't set headers after sent.     @ serverresponse.<anonymous> (http.js:527:11)     @ serverresponse.setheader (/users/admin/node projects/sandboxproject/node_modules/express/node_modules/connect/lib/patch.js:62:20)     @ serverresponse.header (/users/admin/node projects/sandboxproject/node_modules/express/lib/response.js:280:8)     @ serverresponse.redirect (/users/admin/node projects/sandboxproject/node_modules/express/lib/response.js:413:10)     @ promise.<anonymous> (/users/admin/node projects/sandboxproject/app.js:109:8)     @ promise.<anonymous> (/users/admin/node projects/sandboxproject/node_modules/mongoose/lib/promise.js:120:8)     @ promise.<anonymous> (events.js:64:17)     @ promise.emit (/users/admin/node projects/sandboxproject/node_modules/mongoose/lib/promise.js:59:38)     @ promise.complete (/users/admin/node projects/sandboxproject/node_modules/mongoose/lib/promise.js:70:20)     @ /users/admin/node projects/sandboxproject/node_modules/mongoose/lib/query.js:1087:15 

it seem didn't "res.redirect('/' + member.username);" after "req.session.member_id = member._id;". because of asynchronous nature of mongoose findone callback it's in? i've tried removing res.redirect callback session data not stored , when leave in there, "headers sent" error.

my configuration:

app.configure(function(){     app.set('views', __dirname + '/views');     app.set('view engine', 'jade');     app.use(express.cookieparser());     app.use(express.session({ secret: "blahblah" }));     app.use(express.bodyparser());     app.use(express.methodoverride());     app.use(app.router);     app.use(express.static(__dirname + '/public')); }); 

i had similar problem. although problem when deleted session, e.g. delete req.session.user, still there after reloads , node app restarts. gone after req.session.destroy().

i looked @ node's session middleware docs , found have session#save() method. did req.session.save() after session object manipulations , did fix problem. try , see if fixes yours.


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -