0

使用以下代码,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会“消失”???

4

2 回答 2

1

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

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

于 2013-11-05T18:54:42.430 回答
0

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

于 2013-11-01T20:10:08.823 回答