使用此代码,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会“消失”?
答案 0 :(得分:1)
我想我们可以关闭这个。当req.session未定义时,也许我没有连接到redis。我确实发现在使用redis时我需要显式调用req.session.save(),没有redis就不需要。
从我在那里看到的问题判断,如果有人可以创建一个清晰的node.js示例,使用redis-connect进行持久会话,对于节点新手,从头开始,我想你会成为一群人非常高兴。
答案 1 :(得分:0)
您确定它是否连接到Redis数据库?