我目前使用 2 个中间件:
Express-jwt它从请求中提取/验证 JsonWebToken,我自己的中间件检查 JWT 是否包含特定信息(权限)。
我想有条件地一起使用这些中间件(基于路由上是否有特定的 swagger 属性)。
我想做这样的事情:
let expressjwt = function(req, res, next) { ... };
let jwtValidator = function(req, res, next) { ... };
app.use((res, req, next) => {
if(req.swagger.someAttribute) {
expressjwt(req, res, jwtValidator(req, res, next));
// The issue here is that jwtValidator will get called even if
// expressjwt produces an error
} else {
next();
}
});
最佳答案
听起来问题是 - “只有当服务 A 成功时,您如何有条件地调用服务 B。”
这是 promises 的主要目标之一 - 它允许您将异步调用链接在一起并让它们有条件地“解决”。如果需要,我可以发布代码示例。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
关于javascript - 手动链接 Express 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158298/