我使用express和express-session中间件来构建一个启用了session的网站。但一些网址,如/health-check' and/version-checkdo not need session, especially the/health-check`,,会在db(项目使用mongodb).I中产生大量无用的会话,他们相信有一个很好的解决方案。
以下是会话的一个片段:
var session = require('express-session'),
passport = require('passport');
var app = express();
//other middleware.
// Express MongoDB session storage
app.use(session({
saveUninitialized: true,
resave: true,
secret: config.sessionSecret,
cookie: { maxAge: 2628000000 },
store: new mongoStore({
db: db.connection.db,
collection: config.sessionCollection
})
}));
// use passport session
app.use(passport.initialize());
app.use(passport.session());
//...发布于 2015-10-03 20:00:57
我建议创建自己的中间件函数,并将您的会话中间件作为函数放在那里,但要有条件,例如:
app.use(function(req, res, next){
if(...some condition...){//for example check url
//do something or nothing
next();//very important or request will freeze
} else {//otherwise run session
session({your options})(req, res, next);
}
});相反,您的会话(app.use())
在一个自定义中间件中,您可以放入任何其他中间件来添加条件。但是,当您想要将多个中间件包装到单个自定义中间件时,请注意“下一步”。它只能在中间件中使用一次(多个中间件使用它多次)。然后你必须创建你自己的回调'next‘。
https://stackoverflow.com/questions/32881885
复制相似问题