将应用程序身份验证添加到 Swagger UI
Posted
技术标签:
【中文标题】将应用程序身份验证添加到 Swagger UI【英文标题】:Adding the application autehntication to Swagger UI 【发布时间】:2018-12-13 18:56:30 【问题描述】:我有集成 JWT 身份验证的 Spring Boot 应用程序。
为了认证,用户需要向/login
发送一个带有用户名和密码的POST请求,然后他得到一个带有"token": "BEARER SOME_TOKEN"
的JSON响应。
在我招摇的 UI 中,当我单击“试用”并执行请求时,发送的请求没有任何令牌。
问题 - 有没有办法查询登录请求并将授权令牌添加到 Swagger UI 请求?
【问题讨论】:
【参考方案1】:在这种情况下,我们可以在定义 SwaggerUIBundle 时使用index.html
中的这两个拦截器来拦截令牌并将它们添加到所有请求中:
const ui = SwaggerUIBundle(
...
responseInterceptor:
function (response)
if (response.obj.access_token)
console.log(response.obj.access_token)
const token = response.obj.access_token;
localStorage.setItem("token", token)
return response;
,
requestInterceptor:
function (request)
request.headers.Authorization = "Bearer " + localStorage.getItem("token");
return request;
responseInterceptor 捕获响应,如果它包含字段“token”,它会将其保存在本地存储中。 requestInterceptor 使用本地存储中的值在您从 swagger-ui 进行的每个调用中添加 Authorization 标头。
此修复适用于使用 v3 的 swagger-ui:
<script src="https://unpkg.com/swagger-ui-dist@3.12.1/swagger-ui-standalone-preset.js"></script>
<script src="https://unpkg.com/swagger-ui-dist@3.12.1/swagger-ui-bundle.js"></script>
【讨论】:
以上是关于将应用程序身份验证添加到 Swagger UI的主要内容,如果未能解决你的问题,请参考以下文章
使用 JWT Bearer 令牌进行身份验证 Swagger
Swagger UI 将身份验证令牌传递给标头中的 API 调用
迁移到 Swashbuckle.AspNetCore 版本 5 时,Swagger UI 中的不记名身份验证
如何在 Swagger-ui 中显示 Spring Security 用户名密码身份验证过滤器 url?