2014-12-01 63 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;