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
返回一个中间件函数。这是你对每一个请求的称呼。您需要返回相同的。