将应用程序自定义添加到Swagger UI

时间:2018-07-05 10:18:15

标签: spring-boot swagger swagger-ui

我有Spring Boot应用程序,其中集成了JWT身份验证。

为了进行身份验证,用户需要使用用户名和密码向/login发送POST请求,然后他会收到{"token": "BEARER SOME_TOKEN" }的JSON响应。

在我摇摇欲坠的用户界面中,当我单击“试用”并执行请求时,该请求被发送而没有任何令牌。

问题-是否可以查询登录请求并将授权令牌添加到Swagger UI请求?

1 个答案:

答案 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>