在您的自定义中间件中使用流行的 Connect 中间件是否可行?
例如,我正在编写一些身份验证中间件,它显然在很大程度上依赖于 ConnectcookieParser()
和session
方法。这些方法是中间件,因此它们需要传递request
,response
和参数。next
显而易见的选择是在添加身份验证中间件之前确保将它们添加到中间件堆栈,如下所示:
应用程序.js:
app.use(express.cookieParser('secret'))
.use(express.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }}))
.use(my_auth_middleware())
但这似乎有点麻烦,因为我的中间件依赖前两种方法来处理req.session
.
另一种明显的方法是将应用程序传递给我的中间件,然后在其中调用cookieParser()
andsession
方法,但是因为它们都是中间件,我不得不将它们添加到堆栈中,这感觉不对:
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()
andsession
方法排除在我的中间件之外?
显然,我在这些示例中使用 Express,但我知道这些方法源自 Connect。