【问题标题】:Why does node express req.session disappear with redis?为什么node express req.session会随着redis消失?
【发布时间】:2014-05-07 10:36:04
【问题描述】:

Node.js 快速会话使用此代码非常适合我:

var express = require("express");
var app = express();
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
    cookie: {maxAge: pembapp.dayInMilliseconds * 180},
    secret: 'mysecret',
    key: 'mykey'
}));

我可以毫无问题地访问 req.session.whatever。

现在我想用redis来存储会话数据,以防需要重启服务器,所以代码变成了这样:

var express = require("express");
var app = express();
var RedisStore = require('connect-redis')(express);
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
    cookie: {maxAge: pembapp.dayInMilliseconds * 180},
    secret: 'mysecret',
    key: 'mykey',
    store: new RedisStore({
        host: 'localhost',
        port: 6379,
        db: 2,
        prefix: 'myprefix',
        pass: 'mypasswd'
    })
}));

当我添加 redis 代码时,req.session 现在是未定义的!我这辈子都想不通。当我为会话添加redis存储时,为什么req.sesion会“消失”???

【问题讨论】:

    标签: node.js session express redis


    【解决方案1】:

    我认为我们可以关闭这个。当 req.session 未定义时,也许我没有连接到 redis。我确实发现在使用 redis 时需要显式调用 req.session.save(),而没有 redis 则不需要。

    从我在那里看到的问题来看,ff 有人可以使用 redis-connect 为持久会话创建一个清晰的 node.js 示例,对于节点新手,从头开始,我想你会做很多人很开心。

    【讨论】:

      【解决方案2】:

      您确定它正在连接到 Redis 数据库吗?

      【讨论】:

      • 是的,它正在连接。 (我将 redis 日志级别更改为详细,它显示了连接。)
      猜你喜欢
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多