我有Spring Boot应用程序,其中集成了JWT身份验证。
为了进行身份验证,用户需要使用用户名和密码向/login
发送POST请求,然后他会收到{"token": "BEARER SOME_TOKEN" }
的JSON响应。
在我摇摇欲坠的用户界面中,当我单击“试用”并执行请求时,该请求被发送而没有任何令牌。
问题-是否可以查询登录请求并将授权令牌添加到Swagger UI请求?
答案 0 :(得分:0)
在这种情况下,我们可以在定义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捕获响应,如果响应包含字段“令牌”,则将其保存在本地存储中。 requestInterceptor使用本地存储中的值在您从swagger-ui进行的每个调用上添加Authorization标头。
此修复程序用于使用swagger-ui v3:
<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>