I update my sessionID after a successful login in my express application. I use redis-connect and ioredis to support the redis cluster.
Here is my server file code
switch(bll.env) {
case 'production' :
ioRedis = new IoRedis.Cluster(bll.config.redis.cluster, bll.config.redis.options);
break;
case 'staging' :
ioRedis = new IoRedis.Cluster(bll.config.redis);
break;
default :
ioRedis = new IoRedis(bll.config.redis);
break;
}
app.use(session({
store: new RedisStore({client: ioRedis, disableTTl:true, prefix:'prefix:'}),
genid:function(req){
return sessionManager.getSessionId(req);
},
name:"name",
rolling: true,
saveUninitialized: false,
unset: 'keep',
resave: true,
secret: 'somesecret'
}));
Here is my code where I regenerate my session
console.log('previous session id', req.sessionID);
if(req.session.newSessionToken) {
let tempSession = req.session;
req.session.regenerate(function(err){
if(err){
throw(err);
}
req.sessionID = tempSession.newSessionToken;
req.session = tempSession;
req.session.newSessionToken = null;
delete req.session.newSessionToken;
console.log('new session id', req.sessionID);
res.header('x-jabong-sessionid', req.sessionID);
req.session.save(function(err){
if(err){
throw err;
}
return res.json(data);
});
})
} else {
res.header('x-jabong-sessionid', req.sessionID);
return res.json(data);
}
Now when I try to get doc using
127.0.0.1:6379> get jbsess:34edc7ef6f7be59426013e18e773bc5518d9aa0f3d3b7655ecda1109f25164db
(nil)
127.0.0.1:6379>
I get a null document. How can I solve this problem, I could skip something here.
source
share