【发布时间】:2021-06-30 13:13:32
【问题描述】:
我构建了一个使用 CSRF-Cookie 进行身份验证的 API。现在我想用 OpenAPI/Swagger 记录这个 API。
所有路由都受到验证 CSRF-Token 的中间件的保护,/sanctum/csrf-cookie 除外,它用于最初检索 Token。
因此,我需要 Swagger-UI 在每个请求中包含 cookie。我关注了documentation,但它不起作用。
这是我的 Swagger-Definition 的摘录:
security:
- cookieAuth: []
paths:
/sanctum/csrf-cookie:
get:
operationId: "getApiToken"
responses:
'204':
description: "successful token retrieval"
headers:
Set-Cookie:
schema:
type: string
/login:
post:
operationId: "loginUser"
requestBody:
content:
application/json:
schema:
type: "object"
properties:
username:
type: string
password:
type: string
components:
securitySchemes:
cookieAuth:
type: apiKey
in: cookie
name: XSRF-TOKEN
从我的浏览器网络监视器的屏幕截图中可以看出,login 请求的标头不包含 XSRF-Token。
相比之下,这是我的前端发送的完全相同的请求:
【问题讨论】:
-
请参阅linked Q&A。由于浏览器限制,目前 Swagger UI 和 Swagger Editor 不支持 Cookie 身份验证(更多详细信息请参见 github.com/swagger-api/swagger-js/issues/1163)。您链接到的documentation page 也提到了这一点。
标签: swagger swagger-ui openapi