Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 机车框架下连接会话中间件与Redis的结合_Javascript_Node.js_Locomotivejs - Fatal编程技术网

Javascript 机车框架下连接会话中间件与Redis的结合

Javascript 机车框架下连接会话中间件与Redis的结合,javascript,node.js,locomotivejs,Javascript,Node.js,Locomotivejs,我正在使用机车框架创建一个nodejs web应用程序 在config/environments/all.js中,我有: var express = require('express') , poweredBy = require('connect-powered-by') , util = require('util') , connectAssets = require('connect-assets') , redis = require('redis') , RedisStore =

我正在使用机车框架创建一个nodejs web应用程序

config/environments/all.js中,我有:


var express = require('express')
, poweredBy = require('connect-powered-by')
, util = require('util')
, connectAssets = require('connect-assets')
, redis = require('redis')
, RedisStore = require('connect-redis')(express)
, sessionStore = new RedisStore();

........
........

  this.use(express.cookieParser());
  this.use(express.bodyParser());
..........
..........
  this.use(express.session({
    secret: 'LoremIpsumDolorSit_Amet',
    store: sessionStore
  }));

但是,请求对象中不存在会话对象。即,在控制器实例中:
此.req.session
未定义。我缺少什么?如何配置connect会话中间件以使用redis data store

我的redis服务器在默认端口上运行,当我运行服务器时,它显示连接的客户端。只有在我终止服务器时,客户端才会断开连接


我正在Fedora 16上使用节点0.6.18、redis服务器版本2.4.8、机车版本0.3.3和express 3.0.4。

对于要在express中工作的会话,以下三项必须按此顺序进行:


this.use(express.cookieParser());
this.use(express.session(...));
this.use(this.router);
在我的实现中,第三条语句位于第二条语句之上

显然,这是Express的一个已知特性,我对Express的内部工作机制了解不够,无法解释为什么会出现这种情况。可能对NodeJS有更多经验的人可以详细说明细节。

使用
这个。使用()
,您可以添加中间件来表示“请求/响应处理:传入的请求在到达应用程序之前通过所有中间件,在发送回客户端之前,传出响应返回中间件链

安装中间件的顺序很重要:如果您有一个中间件(如
express.session
)依赖于另一个中间件(如
express.cookieParser
)来解析会话cookie,则首先安装依赖项

在大多数情况下,
this.router
应该最后安装,或者几乎最后安装(通常后面是错误处理中间件),因为它依赖于在调用之前处理过的cookie和会话