Node.js 在使用1时处理调用的多个Swagger SecurityHandler定义?

Node.js 在使用1时处理调用的多个Swagger SecurityHandler定义?,node.js,express,swagger,swagger-2.0,Node.js,Express,Swagger,Swagger 2.0,我已将Swagger 2.0配置为具有多个可选的安全定义。当用户调用支持多个定义并使用其中一个定义的端点时,将调用所有配置的处理程序。 我应该如何处理对没有参数的处理程序的请求,并确保使用参数调用至少一个安全处理程序 我在swagger.yaml中有两个单独的API键定义 securityDefinitions: apiKeyQuery: type: "apiKey" name: "api_key" in: "query" apiKeyHeader: ty

我已将Swagger 2.0配置为具有多个可选的安全定义。当用户调用支持多个定义并使用其中一个定义的端点时,将调用所有配置的处理程序。
我应该如何处理对没有参数的处理程序的请求,并确保使用参数调用至少一个安全处理程序

我在swagger.yaml中有两个单独的API键定义

securityDefinitions:
  apiKeyQuery:
    type: "apiKey"
    name: "api_key"
    in: "query"
  apiKeyHeader:
    type: "apiKey"
    name: "API-KEY"
    in: "header"
我希望它们中的任何一个都能正常工作,因此下面是我的端点安全定义:

security:
  - apiKeyQuery: []
  - apiKeyHeader: []
my app.js具有以下两种处理程序:

appRoot: __dirname,
swaggerSecurityHandlers: {
  apiKeyQuery: function(req, res, next) { console.log('Query Called!');},
  apiKeyHeader: function(req, res, next) {console.log('Header Called!');}
}
预期:

Input: curl -X GET --header 'Accept: application/json' 'http://localhost:3000/api/v1/users?api_key=asdfg'
Output: Query Called!
实际:

Input: curl -X GET --header 'Accept: application/json' 'http://localhost:3000/api/v1/users?api_key=asdfg'
Output: Query Called!  Header Called!

这两个安全处理程序请求似乎都是异步的,而swagger会首先使用哪个回调来确定下一步。

似乎swagger会调用这两个函数,但由于我使用了“或”(docs:),如果一个接受,那么它应该移到控制器代码