How can I find the session Id when using express / connect and a session store?


Question

If a user is already logged in and tries to login again in a new instance I'd like it to log out the other user instance. I don't want the same user to be logged in twice on my application.

Currently the session is stored in a Redis store, i'm using express / connect to handle the session storage. One of the functions available which could be used to destroy the session is as follows:

.destroy(sid, callback)

However I need to find that session id before I call .destroy(). In Redis the username is stored as a part of the session.

Question: Is it possible to query Redis to obtain the session id based on the username?

1
25
2/15/2012 10:21:34 AM

Accepted Answer

req.sessionID will provide you the session's ID, where req is a request object.

71
2/3/2019 11:16:45 PM

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:

  1. Make sure you have cookie-parser abd express-session modules inside your package.json. If it's not added, add them:
npm install express-session --save
npm install cookie-parser --save
  1. 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
}));
  1. Now you should be using req.sessionID and req.session.id.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon