我尝试在NodeJS中使用Redis的标准会话持久性:
var express = require('express');
var RedisStore = require('connect-redis')(express);
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
secret: "keyboard cat",
store: new RedisStore,
key: 'sid'
}));
});
app.get('/', function (req, res) {
if (req.session.isValid) {
console.log("There is an existing session.");
}
else {
req.session.isValid = true;
console.log("New session.");
console.log('Old session ID: ' + req.header('Cookie'));
console.log('New session ID: ' + req.session.id);
}
res.render('index', {'title': s});
});
app.listen(4000);
Run Code Online (Sandbox Code Playgroud)
从理论上讲,我应该看到"新会议"这一行.网站的一次和所有后续调用应导致"存在现有会话".不幸的是,每次调用都会重新生成新的会话ID.浏览器中的cookie工作正常,内容正确传输,我可以看到它
req.header('Cookie')
Run Code Online (Sandbox Code Playgroud)
这是控制台日志的样子:
[app.js] New session.
[app.js] Old session ID: …
Run Code Online (Sandbox Code Playgroud)