2013-06-30 46 views
0

我从memorystore切换到使用Redis,我也在本地使用MongoDB。req.session undefined用Redis/Express

我已阅读的类似帖子不相关或有帮助。 基本上,如果路由器函数尝试将值设置为req.session,那么节点应用程序将关闭。

我是Redis的新手,所以也许这是显而易见的东西,我不明白?

// in app 
var app = express(); 
var cookieParser = express.cookieParser('secret'); 
app.configure(function() { 
    app.use(express.bodyParser()); 
    app.use(cookieParser); 
    app.use(express.session({secret: 'secret', store: othermodule.getSessionStore()})); 

// othermodule 
var RedisStore = require('connect-redis')(express); 
var sessionStore = new RedisStore({ 
    host: 'localhost', 
    port: 6379, 
    db: 2, 
    pass: 'RedisPASS'}); 

感谢

+0

尝试删除通行证,并检查您的redis主机/端口是否正确 – user568109

+0

我是否还需要来自redis.createclient的客户端?我正在阅读connect-redis的文档,主机应该是localhost的机器,我认为 – Richard

+0

我曾经给客户端选项,从来没有尝试过没有它。给客户端提供相同的选项。 – user568109

回答

2

尝试删除你的选项,你传递给RedisStore密码。

如果你想要,你可以要求客户端在连接时提供密码。但默认情况下,客户端无需密码即可进行连接。如果不需要密码并且您输入密码,则客户端将尝试使用给定的密码进行验证,这将导致连接失败。客户端不允许使用无密码回退。因为你没有定义会话。

请参阅herehere配置密码。

+0

感谢您的解释 – Richard