【问题标题】:req.session undefined with express and connect-redis [duplicate]req.session 未使用 express 和 connect-redis 定义 [重复]
【发布时间】:2012-12-09 20:00:32
【问题描述】:

可能重复:
‘session’ is undefined when using express / redis for session store

var express = require('express');
var app = express();
var RedisStore = require('connect-redis')(express);
var session = require('redis-session')({

  debug: true,
  ttl: 90000000,
  connection: {port: '7170', host: '127.0.0.1'}    

});

app.configure(function(){

   app.use(express.bodyParser());
   app.set('views',__dirname + '/views');
   app.set('view engine', 'ejs');
   app.use(express.static(__dirname + '/public'));
   app.use(express.session({ secret: 'p!550ff', store: new RedisStore }));
   app.use(express.cookieParser());
   app.use(app.router);

});

有了这个配置,任何时候我打电话给req.session,nodemon 都会告诉我它是未定义的。 express.cookieParser()express.session 声明得很好,我猜。有什么解决办法...?

【问题讨论】:

  • 伙计,这个网站上的纳粹将事物标记为重复或“不符合网站的感觉”可能需要确保他们知道他们在说什么。这个问题不是重复的,因为它使用 Redis 存储进行会话并且有一个完全不同的问题。可惜了。

标签: javascript node.js session express redis


【解决方案1】:

cookieParser 中间件需要在 session 中间件之前,所以像这样交换顺序:

   app.use(express.cookieParser());
   app.use(express.session({ secret: 'p!550ff', store: new RedisStore }));

请参阅此 here 上的 Connect 文档。

【讨论】:

  • 我改了,但是没用
  • 当这个答案对你不起作用时,你为什么选择它作为正确答案?我有确切的问题,如果问题仍然存在,这里可能会有一个正确的答案。
  • 这很简单,但您还需要在您的机器上运行 redis。在另一个终端窗口中运行redis-server
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 2014-03-05
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
相关资源
最近更新 更多