swagger节点具有逻辑AND的多个安全处理程序



我有一个swagger node express应用程序,我不知道如何拥有两个安全处理程序?

我的钱包里有两个SecurityDefinitions.yaml

securityDefinitions:
appKeyA:
type: apiKey
name: Authorization
in: header
appKeyB:
type: apiKey
in: header
name: X-APP-ID

在我的路线

/foo
security:
- appKeyA: []
appKeyB: []

所以逻辑AND

在我的app.js 中

app.use(
middleware.swaggerSecurity({
//manage token function in the 'auth' module
appKeyA: auth.verifyToken
})
);

它成功地运行了我的verifyToken函数中的代码

exports.verifyToken = function(req, authOrSecDef, token, callback) {
...
}

现在我把第二个函数放在哪里,以防止错误:未知的安全处理程序:appKeyB

感谢

当我试图弄清楚如何简单地让安全中间件工作时,我偶然发现了这一点。

首先,安全中间件必须在swaggerRouter之前添加到中间件链中。

其次,对于您的问题,您只需将其添加到安全定义中,如下所示:

app.use(middleware.swaggerMetadata());
app.use(middleware.swaggerValidator());
// This must be placed before the swaggerRouter
app.use(
middleware.swaggerSecurity({
//manage token function in the 'auth' module
appKeyA: auth.verifyToken,
appKeyB: auth.verifyToken2 //Add the second token to verify appKeyB
})
);
app.use(middleware.swaggerRouter(options));
app.use(middleware.swaggerUi());

此外,我在这里介绍了一种新的验证方法,称为verifyToken2,将此函数添加到您的auth文件中,以便导出两个函数:)

exports.verifyToken2 = function(req, authOrSecDef, token, callback) {
...
}

最新更新