使用connect-redis重复前缀

我正在尝试在我的web应用程序中使用connect-redis:“〜3.0.1”与express-session:“〜1.12.1”来存储用户会话。 但是当我在RedisStore中给前缀字段时,它重复了两次。 请告诉我是否做错了什么。

“mySession:mySession:yzO1mRhloENUMYLkAz2nZprcfvcFMNHY”“mySession:mySession:0L8prCJAoq0CmJ9tTwTJ_smQ4fH2R_H9”

在search时,我遇到了与laravel代码类似的问题:

https://github.com/laravel/framework/issues/5353

请告诉我们是否有类似的情况发生,如果是的话,解决方法是什么。

以下是我正在使用的代码:

var sessionMiddleware = session({ secret : 'secretPass', store: new RedisStore({ prefix:'mySession:', ttl: 1800}), resave: false, saveUninitialized: false }); app.use(function (req, res, next) { var tries = 3; function lookupSession(error) { if (error) { return next(error); } tries -= 1 if (req.session !== undefined) { return next(); } if (tries < 0) { var errorMsg = 'Error in getting session. Please refresh the page.'; return next(new Error(errorMsg)); } sessionMiddleware(req, res, lookupSession); } lookupSession(); }) 

我可以通过先手动创buildredis客户端并将其传递给会话对象来解决此问题,而不依赖于connect-redis为我创build它。

 redis_client = require('redis').createClient(); var sessionMiddleware = session({ secret : 'secretPass', store: new RedisStore({ prefix:'mySession:', ttl: 1800, client: redis_client}), resave: false, saveUninitialized: false 

});

如果我不通过客户端,connect-redis.js中的以下代码在创buildredis客户端时传递选项,然后添加一个额外的前缀。

 // convert to redis connect params if (options.client) { this.client = options.client; } else if (options.socket) { this.client = redis.createClient(options.socket, options); } else { this.client = redis.createClient(options); }