在Express中会话重新生成后,Redic doc是(nil)

时间:2016-01-08 07:31:22

标签: node.js session express redis

在我的快递应用程序中成功登录标志后,我正在重新生成我的sessionID。我正在使用redis-connect和ioredis来支持redis集群。

这是我的服务器文件代码

// Redis Client Intialization
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'
}));

这是我正在重新生成会话的代码

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);
        }

现在我正试图通过

获取文档
    127.0.0.1:6379> get jbsess:34edc7ef6f7be59426013e18e773bc5518d9aa0f3d3b7655ecda1109f25164db
(nil)
127.0.0.1:6379> 

我收到零文件。我怎么能解决这个问题,我可能会在这里遗漏一些东西。

0 个答案:

没有答案