我有一个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
谢谢
当我试图找出如何简单地使安全中间件工作时,我偶然发现了这一点。
首先,必须在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) {
...
}