【发布时间】:2013-06-23 21:21:04
【问题描述】:
在您的自定义中间件中使用流行的 Connect 中间件是否可行?
例如,我正在编写一些身份验证中间件,这显然非常依赖 Connect 的 cookieParser() 和 session 方法。这些方法是中间件,因此需要传递request、response 和next 参数。显而易见的选择是在添加身份验证中间件之前确保将它们添加到中间件堆栈,如下所示:
app.js:
app.use(express.cookieParser('secret'))
.use(express.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }}))
.use(my_auth_middleware())
但这似乎有点麻烦,因为我的中间件依赖前两种方法来处理req.session。
另一个明显的方法是将应用程序传递到我的中间件中,然后在其中调用 cookieParser() 和 session 方法,但是因为它们都是中间件,所以我必须将它们添加到堆栈中,感觉不对:
my_auth_middleware.js:
module.exports = function(app){
app.use(express.cookieParser('secret'));
app.use(express.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }}));
return function(req, res, next){
// do stuff with req.session
next();
}
}
谁能确认这是一种合乎逻辑的做事方式?是否有理由将 cookieParser() 和 session 方法排除在我的中间件之外?
显然我在这些示例中使用 Express,但我知道这些方法源自 Connect。
【问题讨论】: