我有一个swagger node express应用程序,我不知道如何拥有两个安全处理程序?
我的钱包里有两个SecurityDefinitions.yaml
securityDefinitions:
appKeyA:
type: apiKey
name: Authorization
in: header
appKeyB:
type: apiKey
in: header
name: X-APP-ID
在我的路线
/foo
security:
- appKeyA: []
appKeyB: []
所以逻辑AND
在我的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) {
...
}