From 68e57803f3386ab4f5211dd30e4d8ade9d24f0a4 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期五, 13 一月 2023 23:04:08 +0800 Subject: [PATCH] update 适配 springboot-admin 改为最新 spring-security 写法 --- ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java | 67 ++++++++++++++++++++++++++++++++- 1 files changed, 65 insertions(+), 2 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java index 271f01f..ab92cf5 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java @@ -1,19 +1,29 @@ package com.ruoyi.framework.config; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.config.properties.SwaggerProperties; +import com.ruoyi.framework.handler.OpenApiHandler; import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.Paths; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.security.SecurityRequirement; import lombok.RequiredArgsConstructor; -import org.springdoc.core.SpringDocConfiguration; +import org.springdoc.core.*; +import org.springdoc.core.customizers.OpenApiBuilderCustomizer; +import org.springdoc.core.customizers.OpenApiCustomiser; +import org.springdoc.core.customizers.ServerBaseUrlCustomizer; +import org.springdoc.core.providers.JavadocProvider; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.ArrayList; import java.util.List; +import java.util.Optional; +import java.util.Set; /** * Swagger 鏂囨。閰嶇疆 @@ -27,6 +37,7 @@ public class SwaggerConfig { private final SwaggerProperties swaggerProperties; + private final ServerProperties serverProperties; @Bean @ConditionalOnMissingBean(OpenAPI.class) @@ -41,8 +52,11 @@ openApi.tags(swaggerProperties.getTags()); openApi.paths(swaggerProperties.getPaths()); openApi.components(swaggerProperties.getComponents()); + Set<String> keySet = swaggerProperties.getComponents().getSecuritySchemes().keySet(); List<SecurityRequirement> list = new ArrayList<>(); - list.add(new SecurityRequirement().addList("apikey")); + SecurityRequirement securityRequirement = new SecurityRequirement(); + keySet.forEach(securityRequirement::addList); + list.add(securityRequirement); openApi.security(list); return openApi; @@ -57,4 +71,53 @@ info.setVersion(infoProperties.getVersion()); return info; } + + /** + * 鑷畾涔� openapi 澶勭悊鍣� + */ + @Bean + public OpenAPIService openApiBuilder(Optional<OpenAPI> openAPI, + SecurityService securityParser, + SpringDocConfigProperties springDocConfigProperties, PropertyResolverUtils propertyResolverUtils, + Optional<List<OpenApiBuilderCustomizer>> openApiBuilderCustomisers, + Optional<List<ServerBaseUrlCustomizer>> serverBaseUrlCustomisers, Optional<JavadocProvider> javadocProvider) { + return new OpenApiHandler(openAPI, securityParser, springDocConfigProperties, propertyResolverUtils, openApiBuilderCustomisers, serverBaseUrlCustomisers, javadocProvider); + } + + /** + * 瀵瑰凡缁忕敓鎴愬ソ鐨� OpenApi 杩涜鑷畾涔夋搷浣� + */ + @Bean + public OpenApiCustomiser openApiCustomiser() { + String contextPath = serverProperties.getServlet().getContextPath(); + String finalContextPath; + if (StringUtils.isBlank(contextPath) || "/".equals(contextPath)) { + finalContextPath = ""; + } else { + finalContextPath = contextPath; + } + // 瀵规墍鏈夎矾寰勫鍔犲墠缃笂涓嬫枃璺緞 + return openApi -> { + Paths oldPaths = openApi.getPaths(); + if (oldPaths instanceof PlusPaths) { + return; + } + PlusPaths newPaths = new PlusPaths(); + oldPaths.forEach((k,v) -> newPaths.addPathItem(finalContextPath + k, v)); + openApi.setPaths(newPaths); + }; + } + + /** + * 鍗曠嫭浣跨敤涓�涓被渚夸簬鍒ゆ柇 瑙e喅springdoc璺緞鎷兼帴閲嶅闂 + * + * @author Lion Li + */ + static class PlusPaths extends Paths { + + public PlusPaths() { + super(); + } + } + } -- Gitblit v1.9.3