mirror of https://github.com/jeecgboot/jeecg-boot
commit
632fd72d79
|
@ -9,16 +9,39 @@ 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.customizers.GlobalOpenApiCustomizer;
|
||||||
import org.springdoc.core.models.GroupedOpenApi;
|
import org.springdoc.core.models.GroupedOpenApi;
|
||||||
import org.springframework.context.annotation.Bean;
|
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
|
||||||
|
*/
|
||||||
|
@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资源:
|
||||||
*
|
*
|
||||||
|
@ -40,20 +63,47 @@ public class Swagger3Config implements WebMvcConfigurer {
|
||||||
.packagesToExclude("org.jeecg.modules.drag", "org.jeecg.modules.online", "org.jeecg.modules.jmreport")
|
.packagesToExclude("org.jeecg.modules.drag", "org.jeecg.modules.online", "org.jeecg.modules.jmreport")
|
||||||
// 加了Operation注解的方法,才生成接口文档
|
// 加了Operation注解的方法,才生成接口文档
|
||||||
.addOpenApiMethodFilter(method -> method.isAnnotationPresent(Operation.class))
|
.addOpenApiMethodFilter(method -> method.isAnnotationPresent(Operation.class))
|
||||||
|
.addOpenApiCustomizer(globalOpenApiCustomizer())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public GlobalOpenApiCustomizer globalOpenApiCustomizer() {
|
||||||
|
return openApi -> {
|
||||||
|
// 全局添加鉴权参数
|
||||||
|
if (openApi.getPaths() != null) {
|
||||||
|
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))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public OpenAPI customOpenAPI() {
|
public OpenAPI customOpenAPI() {
|
||||||
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")
|
||||||
.license(new License().name("Apache 2.0").url("http://www.apache.org/licenses/LICENSE-2.0.html"))
|
.license(new License().name("Apache 2.0").url("http://www.apache.org/licenses/LICENSE-2.0.html")))
|
||||||
);
|
.addSecurityItem(new SecurityRequirement().addList(CommonConstant.X_ACCESS_TOKEN))
|
||||||
|
.components(new Components().addSecuritySchemes(CommonConstant.X_ACCESS_TOKEN,
|
||||||
|
new SecurityScheme().name(CommonConstant.X_ACCESS_TOKEN).type(SecurityScheme.Type.HTTP)));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
|
@ -1,6 +1,11 @@
|
||||||
server:
|
server:
|
||||||
port: 7001
|
port: 7001
|
||||||
|
|
||||||
|
springdoc:
|
||||||
|
packages-to-exclude:
|
||||||
|
- org.jeecg.modules.drag
|
||||||
|
- org.jeecg.modules.online
|
||||||
|
- org.jeecg.modules.jmreport
|
||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: jeecg-system
|
name: jeecg-system
|
||||||
|
|
Loading…
Reference in New Issue