2014-12-01 70 views
-2

这是我当前的代码:如何在自定义中间件内写入快速会话?

var express = require('express'); 
app.configure(function(){ 
    app.use(express.static(_settings.c.WEB_PATH + '/public')); 
    app.use(_mods.web.mware.rawBody); 
    app.use(express.bodyParser()); 
    app.use(express.cookieParser()); 
    app.use(express.methodOverride()); 
    app.use(express.session({ 
      cookie:{ domain:"."+_settings.c.SITE_DOMAIN, maxAge:1440009999}, 
      secret:'password', 
      store: r_store, 
      })); 
    //other middleware here 

}); 

我想,以取代自定义中间件会话部分(在另一个文件)。 我会拿出这届会议的一部分,并把这个在:

var helper = require('helper.js'); 
app.use(helper.setSession); 

在该文件中,我有这样的:

var express = require('express'); 
function setSession(req,res,next){ 
    express.session({ 
    cookie:{ domain:"."+_settings.c.SITE_DOMAIN, maxAge:1440009999}, 
    secret:'password', 
    store: r_store, 
    }) 
    next(); 
}; 
exports.setSession = setSession; 

然而,当我运行它,会话不是connecting.I不知道如何调试它。

+0

我可能会误解我在看什么,但我不认为你会想每次都运行'express.session',不是吗? – 2014-12-01 20:45:36

+0

不是。我只想在某些场合运行它。 – TIMEX 2014-12-01 20:46:27

+0

不,我的意思是'express.session' *返回一个中间件函数。在这里你可以每个请求都调用它。你需要返回相同的。 – 2014-12-01 20:47:12

回答

0

app.use采取与签名的函数(或函数数组)(err,)req, res(, next)

express.session()返回像任何其他中间件的功能。你永远不会调用这个函数。

var express = require('express'); 
function setSession(req, res, next){ 
    express.session({ 
    cookie:{ domain:"."+_settings.c.SITE_DOMAIN, maxAge:1440009999}, 
    secret:'password', 
    store: r_store, 
    })(req, res, next); 
}; 
exports.setSession = setSession;