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

时间:2017-11-17 19:30:01

标签: node.js express swagger swagger-ui

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

我的swagger.yaml

中有两个SecurityDefinitions
/foo
security:
        - appKeyA: []
          appKeyB: []

在我的路线

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

    })
  );

如此逻辑AND

在我的app.js

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

它成功运行了我的verifyToken函数

中的代码
{{1}}

现在我在哪里放第二个功能来阻止获取 错误:未知安全处理程序:appKeyB

由于

1 个答案:

答案 0 :(得分: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());

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

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