diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java index 3b9c9a60..ed3880b9 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java @@ -9,6 +9,7 @@ import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import io.swagger.v3.oas.models.security.SecurityRequirement; import io.swagger.v3.oas.models.security.SecurityScheme; +import lombok.extern.slf4j.Slf4j; import org.jeecg.common.constant.CommonConstant; import org.springdoc.core.GroupedOpenApi; import org.springdoc.core.customizers.GlobalOpenApiCustomizer; @@ -16,11 +17,30 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + /** * @author eightmonth */ +@Slf4j @Configuration public class Swagger3Config implements WebMvcConfigurer { + // 定义不需要注入安全要求的路径集合 + Set excludedPaths = new HashSet<>(Arrays.asList( + "/sys/randomImage/{key}", + "/sys/login", + "/sys/phoneLogin", + "/sys/mLogin", + "/sys/sms", + "/sys/cas/client/validateLogin", + "/test/jeecgDemo/demo3", + "/sys/thirdLogin/**", + "/sys/user/register" + )); + /** * * 显示swagger-ui.html文档展示页,还必须注入swagger资源: @@ -52,12 +72,21 @@ public class Swagger3Config implements WebMvcConfigurer { return openApi -> { // 全局添加鉴权参数 if (openApi.getPaths() != null) { - openApi.getPaths().forEach((s, pathItem) -> { - // 接口添加鉴权参数 - pathItem.readOperations() - .forEach(operation -> - operation.addSecurityItem(new SecurityRequirement().addList(CommonConstant.X_ACCESS_TOKEN)) - ); + openApi.getPaths().forEach((path, pathItem) -> { + log.info("path: {}", path); + // 检查当前路径是否在排除列表中 + boolean isExcluded = excludedPaths.stream().anyMatch(excludedPath -> + excludedPath.equals(path) || + (excludedPath.endsWith("**") && path.startsWith(excludedPath.substring(0, excludedPath.length() - 2))) + ); + + if (!isExcluded) { + // 接口添加鉴权参数 + pathItem.readOperations() + .forEach(operation -> + operation.addSecurityItem(new SecurityRequirement().addList(CommonConstant.X_ACCESS_TOKEN)) + ); + } }); } }; @@ -68,7 +97,7 @@ public class Swagger3Config implements WebMvcConfigurer { return new OpenAPI() .info(new Info() .title("JeecgBoot 后台服务API接口文档") - .version("1.0") + .version("3.7.4") .contact(new Contact().name("北京国炬信息技术有限公司").url("www.jeccg.com").email("jeecgos@163.com")) .description( "后台API接口") .termsOfService("NO terms of service") @@ -77,4 +106,4 @@ public class Swagger3Config implements WebMvcConfigurer { .components(new Components().addSecuritySchemes(CommonConstant.X_ACCESS_TOKEN, new SecurityScheme().name(CommonConstant.X_ACCESS_TOKEN).type(SecurityScheme.Type.HTTP))); } -} +} \ No newline at end of file