node.js - 带有逻辑 AND 的 swagger Node 多个安全处理程序

标签 node.js express swagger swagger-ui

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

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

谢谢

最佳答案

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

首先,安全中间件必须在 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());

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

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

关于node.js - 带有逻辑 AND 的 swagger Node 多个安全处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47357970/

相关文章:

javascript - 基本catch block 中未处理的Promise拒绝

node.js - ExpressJS 请求对象

javascript - node.js 和 express - 使用多个中间件与回调 - 最佳实践是什么?

json - 将 Swagger JSON 转换为 RAML/YAML

java - 在 OpenAPI 中指定一个集合

swagger - 如何在 Swagger 中描述具有简单对象的数组的模型?

node.js - 如何知道 Jade 中的 block 内容是否为空

sql - nodejs mssql - 传递的参数太多存储过程

javascript - Node JS - Youtube API 为空白

node.js - 无法上传图片到postgres数据库