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

问题描述 投票:3回答:1

我有一个swagger节点快递应用程序,我不知道如何有两个安全处理程序?

我的swagger.yaml中有两个SecurityDefinitions

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

在我的路线

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

如此逻辑和

在我的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

谢谢

node.js express swagger swagger-ui
1个回答
0
投票

当我试图找出如何简单地使安全中间件工作时,我偶然发现了这一点。

首先,必须在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) {
  ...
}
© www.soinside.com 2019 - 2024. All rights reserved.