【发布时间】:2013-12-13 04:29:00
【问题描述】:
我正在尝试访问 express 中的会话数据,因此我想在配置 express 时尝试声明一个 connect-redis 会话存储。但是,我不明白为什么这不起作用:
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'));
});
'/' 路由只是用会话配置项目。
“/items”路由显示会话中的项目列表。
它使用标准 expressjs 会话存储。 使用 connect-redis 不起作用(req.session 未定义)
我假设 redis 存储将在应用加载/卸载时被实例化和销毁(或者我是否需要它在 node/express 应用之外运行?)
有什么想法吗?
【问题讨论】:
-
在您的问题中添加 node.js 标签以获得更多关注/视图
标签: node.js session express redis