|
|
@ -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.info.License;
|
|
|
|
import io.swagger.v3.oas.models.security.SecurityRequirement;
|
|
|
|
import io.swagger.v3.oas.models.security.SecurityRequirement;
|
|
|
|
import io.swagger.v3.oas.models.security.SecurityScheme;
|
|
|
|
import io.swagger.v3.oas.models.security.SecurityScheme;
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.jeecg.common.constant.CommonConstant;
|
|
|
|
import org.jeecg.common.constant.CommonConstant;
|
|
|
|
import org.springdoc.core.GroupedOpenApi;
|
|
|
|
import org.springdoc.core.GroupedOpenApi;
|
|
|
|
import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
|
|
|
|
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.context.annotation.Configuration;
|
|
|
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
|
|
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
|
|
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
|
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @author eightmonth
|
|
|
|
* @author eightmonth
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@Configuration
|
|
|
|
@Configuration
|
|
|
|
public class Swagger3Config implements WebMvcConfigurer {
|
|
|
|
public class Swagger3Config implements WebMvcConfigurer {
|
|
|
|
|
|
|
|
// 定义不需要注入安全要求的路径集合
|
|
|
|
|
|
|
|
Set<String> 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资源:
|
|
|
|
* 显示swagger-ui.html文档展示页,还必须注入swagger资源:
|
|
|
@ -52,12 +72,21 @@ public class Swagger3Config implements WebMvcConfigurer {
|
|
|
|
return openApi -> {
|
|
|
|
return openApi -> {
|
|
|
|
// 全局添加鉴权参数
|
|
|
|
// 全局添加鉴权参数
|
|
|
|
if (openApi.getPaths() != null) {
|
|
|
|
if (openApi.getPaths() != null) {
|
|
|
|
openApi.getPaths().forEach((s, pathItem) -> {
|
|
|
|
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()
|
|
|
|
pathItem.readOperations()
|
|
|
|
.forEach(operation ->
|
|
|
|
.forEach(operation ->
|
|
|
|
operation.addSecurityItem(new SecurityRequirement().addList(CommonConstant.X_ACCESS_TOKEN))
|
|
|
|
operation.addSecurityItem(new SecurityRequirement().addList(CommonConstant.X_ACCESS_TOKEN))
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -68,7 +97,7 @@ public class Swagger3Config implements WebMvcConfigurer {
|
|
|
|
return new OpenAPI()
|
|
|
|
return new OpenAPI()
|
|
|
|
.info(new Info()
|
|
|
|
.info(new Info()
|
|
|
|
.title("JeecgBoot 后台服务API接口文档")
|
|
|
|
.title("JeecgBoot 后台服务API接口文档")
|
|
|
|
.version("1.0")
|
|
|
|
.version("3.7.4")
|
|
|
|
.contact(new Contact().name("北京国炬信息技术有限公司").url("www.jeccg.com").email("jeecgos@163.com"))
|
|
|
|
.contact(new Contact().name("北京国炬信息技术有限公司").url("www.jeccg.com").email("jeecgos@163.com"))
|
|
|
|
.description( "后台API接口")
|
|
|
|
.description( "后台API接口")
|
|
|
|
.termsOfService("NO terms of service")
|
|
|
|
.termsOfService("NO terms of service")
|
|
|
|