我正在尝试访问 Express 中的 session 数据,因此我想在配置 Express 时尝试声明 connect-redis session 存储。但是,我不明白为什么这不起作用:
var express = require('express');
var http = require('http');
var RedisStore = require('connect-redis')(express);
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat", store: new RedisStore }));
//app.use(express.session({ secret: "keyboard cat" }));
app.use(app.router);
app.get('/', function(req, res){
console.log('/');
req.session.items = [ 'apple', 'orange' ];
res.end('items configured');
});
app.get('/items', function(req, res){
console.log('/items: ', req.session.items);
var s = JSON.stringify(req.session.items);
res.end('items: ' + s);
});
var server = http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
“/”路由只是使用 session 配置项目。
“/items”路由显示 session 中的项目列表。
它使用标准的expressjs session 存储来工作。 使用 connect-redis 不起作用(req.session 未定义)
我假设 redis 存储将在应用程序加载/卸载时实例化并销毁(或者我是否需要它在 Node/express 应用程序之外运行?)
有什么想法吗?
最佳答案
如果 RedisStore
无法连接到您的 Redis 服务器,
req.session
将是未定义的。因此它要么没有运行,要么没有在 RedisStore
正在寻找它的默认位置 (127.0.0.1:6379
) 上运行。
如果是后者,您可以使用 options
配置位置RedisStore
构造函数的参数。
关于node.js - 在nodejs/expressjs中使用RedisStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244026/