使用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); }
- Node.js Express + Passport + Cookie会话n> 1个服务器
- 在Now.js中的会话支持
- 如何获得不更新会话的Express / Connect路由
- 有人可以解释这一点:EventEmitter导致全局variables时失败
- 奇怪的node.js错误:TypeError:Object#<Object> has no method'on'
- 什么是Node.js连接会话()参数中的安全选项
- Node / connect问题对象函数createServer没有方法static
- 传递res.end()作为callback不起作用的Nodejs
- 找不到兼容版本:mongodb@3.2.8