我正在使用OpenAPI和Swagger UI编写Node文档和API。API使用缓存中的API密钥进行身份验证。我在OpenAPI定义中配置了全局cookie身份验证。问题是它只发送一个cookie和请愿书,而我需要发送三个。当我使用Swagger UI发送请求时,cookie头部使用以下格式发送:“cookie1=value;cookie2=value”。
我尝试创建三个全局安全方案,每个方案对应一个需要发送的cookie,我成功地做到了,但Swagger UI使用以下格式发送cookie头:“cookie 1 =value&cookie2=value”,即使值正确,它也会返回身份验证错误。
这是我的swagger.json中的配置:
...
"components": {
"securitySchemes": {
"cookieAuth": {
"name": "user",
"type": "apiKey",
"in": "cookie"
}
}
},
"security": [
{
"cookieAuth": []
}
],
...
这是我尝试的第二种方法:
...
"components": {
"securitySchemes": {
"user": {
"name": "user",
"type": "apiKey",
"in": "cookie"
},
"password": {
"name": "user",
"type": "apiKey",
"in": "cookie"
},
"hashFunc": {
"name": "user",
"type": "apiKey",
"in": "cookie"
}
}
},
"security": [
{
"user": [],
"password": [],
"hashFunc": []
}
],
...
我真正需要的是知道如何配置它,以便Swagger UI将以与浏览器相同的格式解释它。
2条答案
按热度按时间eyh26e7m1#
这是Swagger UI的一个已知问题:
https://github.com/swagger-api/swagger-ui/issues/4218
您可以尝试使用另一个文档呈现器,看看它是否可以正确处理cookie。
cwtwac6a2#
最后,我们对这个问题进行了如下处理:
登录端点首先需要用户身份,并具有有效值,这些值存储为cookie,然后他们可以测试任何剩余的端点,这些端点将使用存储的cookie。注销将清除存储的cookie。
这就是swagger配置的最终结果: