How can I find the session Id when using express / connect and a session store?
req.sessionID
will provide you the session's ID, where req is a request object.
Store the SID with the account, when the user logs in during the database validation of the user account call .destroy(sid, fn), then update the SID in the database with the current SID of the user.
In my case using MongoDB this is how i've done it:
app.post('/login', function(req, res)
{
var sid = req.sessionID;
var username = req.body.user;
var password = req.body.pass;
users.findOne({username : username, password : password}, function(err, result)
{
...
sessionStore.destroy(result.session, function(){
...
users.update({_id: result._id}, {$set:{"session" : sid}});
...
}
...
}
}
For recent readers;
Connect middlewares are not included in Express since version 4.
So in order to have req.sessionID
work you must do following:
- Make sure you have
cookie-parser
abdexpress-session
modules inside your package.json. If it's not added, add them:
npm install express-session --save npm install cookie-parser --save
- Be careful about the order while requiring them in your
app.js
file and add required configuration parameters.
var cookieParser = require('cookie-parser'); var session = require('express-session') app.use(cookieParser()); app.use(session({ secret: '34SDgsdgspxxxxxxxdfsG', // just a long random string resave: false, saveUninitialized: true }));
- Now you should be using
req.sessionID
andreq.session.id
.