我使用快速和快速会话中间件来构建一个启用了会话的网站。但是有些网址如/health-check' and
/ version-check do not need session, especially the
/ health-check`,会在db中产生大量无用的会话(项目使用mongodb)。我相信有一个很好的解决方案解决这个问题。
以下是会话的片段:
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());
//...
答案 0 :(得分:0)
我建议创建自己的中间件函数,并将会话中间件作为函数放在那里,但条件包括:
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(session())
在一个自定义中间件中,您可以添加任何其他中间件来添加条件。但是当你想要将更多的中间件包装到单个自定义中间件时要小心“下一步”。它只能在中间件中使用一次(多个中间件使用多次)。然后你必须创建自己的回调'下一步'。