Node.js 如何在自定义中间件中编写Express会话?

Node.js 如何在自定义中间件中编写Express会话?,node.js,session,express,Node.js,Session,Express,这是我当前的代码: 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

这是我当前的代码:

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;

但是,当我运行它时,会话没有连接。我不知道如何调试它。

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;

我可能误解了我所看到的,但我不认为您每次都想运行
express.session
,不?不。我只想在某些情况下运行它。不,我的意思是
express.session
返回一个中间件函数。这是你对每一个请求的称呼。您需要返回相同的。