如何dynamic地决定请求是否应该通过Express中间件

所有:

我对Epxress来说是个新手,我构build了一个中间件来检查用户凭证,并将其指定为:

var check = function(req, res, next){/* checking user cred*/} 

我使用它就像:

 app.use(check); 

或者像:

 app.get("some url", check, function(req, res, next){}) 

但是只有一件事让我困惑,有时候,我需要跳过同一个处理程序中的check来取决于req.query, 我不知道是否有一种方法(或devise模式)来做到这一点,而没有指定这个条件检查里面检查中间件我只是想检查模块化,专注于其商业逻辑)?

谢谢

       

网上收集的解决方案 "如何dynamic地决定请求是否应该通过Express中间件"

对于身份validation,一个典型的模式是拥有一个允许匿名访问的路由集合,还有一个需要身份validation的部分,因此会调用您的中间件。

此外,请查看Passport库以了解您的身份validation问题,并将其很好地集成到Express中。

如果您希望模块化支票中间件,以便您可以在其他地方使用它,则可以很容易地包含某种标志来检查req.query参数或其他任何您想检查的内容,并使其更通用:

 function(req, res, next){ if(!req.query){ // do some kind of check } else { // do a check with req.query } } 

那是你想要做什么的?