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

时间:2014-12-01 20:38:39

标签: 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.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;

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

1 个答案:

答案 0 :(得分: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;