整合knife4j-3.0.3!

product
Your Name 2 years ago
parent fc72e54fa9
commit eadd9e90dd

@ -29,6 +29,7 @@ import java.util.concurrent.ConcurrentHashMap;
*/ */
@SpringBootApplication(scanBasePackages = "jnpf",exclude={DataSourceAutoConfiguration.class}) @SpringBootApplication(scanBasePackages = "jnpf",exclude={DataSourceAutoConfiguration.class})
@EnableScheduling @EnableScheduling
public class LinkageAdminApplication extends SpringBootServletInitializer implements CommandLineRunner { public class LinkageAdminApplication extends SpringBootServletInitializer implements CommandLineRunner {
public static void main(String[] args) { public static void main(String[] args) {

@ -3,6 +3,7 @@ package jnpf.filter;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration; import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
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.ArrayList; import java.util.ArrayList;
@ -25,7 +26,24 @@ public class WebFilterConfig implements WebMvcConfigurer {
//不拦截的路径 //不拦截的路径
registration.excludePathPatterns(excludePath()); registration.excludePathPatterns(excludePath());
} }
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
/** 配置knife4j 显示文档 */
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
/**
* swagger-ui
*/
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
/** 公共部分内容 */
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
private List<String> excludePath (){ private List<String> excludePath (){
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
list.add("/api/oauth/Login"); list.add("/api/oauth/Login");
@ -62,6 +80,8 @@ public class WebFilterConfig implements WebMvcConfigurer {
list.add("/api/system/DataInterface/{id}/Actions/Response"); list.add("/api/system/DataInterface/{id}/Actions/Response");
list.add("/api/oauth/ImageCode/{codeLength}/{timestamp}"); list.add("/api/oauth/ImageCode/{codeLength}/{timestamp}");
list.add("/api/oauth/getConfig/{account}"); list.add("/api/oauth/getConfig/{account}");
list.add("/error");
list.add("/favicon.ico");
return list; return list;
} }

@ -40,10 +40,10 @@
<groupId>com.fasterxml.jackson.module</groupId> <groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId> <artifactId>jackson-module-jaxb-annotations</artifactId>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>io.springfox</groupId> <!-- <groupId>io.springfox</groupId>-->
<artifactId>springfox-boot-starter</artifactId> <!-- <artifactId>springfox-boot-starter</artifactId>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>org.apache.tomcat.embed</groupId> <groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId> <artifactId>tomcat-embed-core</artifactId>
@ -173,9 +173,16 @@
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId> <artifactId>pagehelper</artifactId>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>com.github.xiaoymin</groupId>-->
<!-- <artifactId>knife4j-spring-boot-autoconfigure</artifactId>-->
<!-- <version>3.0.3</version>-->
<!-- </dependency>-->
<!-- knife4j -->
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-autoconfigure</artifactId> <artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version> <version>3.0.3</version>
</dependency> </dependency>
<!--如果SpringBoot版本大于2.3则需要引入下面依赖--> <!--如果SpringBoot版本大于2.3则需要引入下面依赖-->

@ -4,6 +4,8 @@ package jnpf.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
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.context.annotation.Import;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.builders.RequestHandlerSelectors;
@ -14,25 +16,25 @@ import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration @Configuration
@EnableOpenApi @EnableSwagger2 //开启 Swagger2
// @EnableKnife4j @EnableKnife4j //开启 knife4j可以不写
// @EnableSwagger2 @Import(BeanValidatorPluginsConfiguration.class)
public class Knife4jConfig { public class Knife4jConfig {
@Bean @Bean
public Docket docket() { public Docket docket() {
Docket docket = new Docket(DocumentationType.OAS_30) Docket docket = new Docket(DocumentationType.OAS_30)
.apiInfo(new ApiInfoBuilder() .apiInfo(new ApiInfoBuilder()
.title("我的标题") .title("低代码开发平台接口文档")
.description("我的描述") .description("项目描述")
// .termsOfServiceUrl("http://www.xx.com/") // .termsOfServiceUrl("http://www.linkage.top/")
.contact(new Contact("knife", "https://knife.blog.csdn.net/", "xx@qq.com")) //.contact(new Contact("knife", "https://knife.blog.csdn.net/", "xx@qq.com"))
.version("1.0") .version("1.0")
.build()) .build())
// 分组名称 // 分组名称
.groupName("all") .groupName("all")
.select() .select()
// 这里指定Controller扫描包路径 // 这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("jnpf.permission.controller")) .apis(RequestHandlerSelectors.basePackage("jnpf"))
.paths(PathSelectors.any()) .paths(PathSelectors.any())
.build(); .build();

@ -11,7 +11,15 @@
//import springfox.documentation.service.Contact; //import springfox.documentation.service.Contact;
//import springfox.documentation.spi.DocumentationType; //import springfox.documentation.spi.DocumentationType;
//import springfox.documentation.spring.web.plugins.Docket; //import springfox.documentation.spring.web.plugins.Docket;
// ///**
// * @author jerry
// * @date Created in 2022/5/28 10:30
// * @description
// * @version: V1.1
// * *Swagger3API文档的配置
// * knife4j文档地址(端口号根据自己项目配置) http://localhost:8081/doc.html#
// * swagger文档地址(端口号根据自己项目配置)http://localhost:8081/swagger-ui/index.html#/
// */
//@Configuration //@Configuration
//@EnableOpenApi //@EnableOpenApi
//@EnableKnife4j //@EnableKnife4j
@ -34,11 +42,10 @@
// return new ApiInfoBuilder() // return new ApiInfoBuilder()
// .title("SwaggerUI接口文档") // .title("SwaggerUI接口文档")
// .description("接口文档Swagger-Bootstrap版") // .description("接口文档Swagger-Bootstrap版")
// .termsOfServiceUrl("http://localhost:30000/swagger-ui/index.html#/") // .termsOfServiceUrl("http://localhost:8081/swagger-ui/index.html#/")
// .contact(new Contact("jerry","http://localhost:30000/doc.html#", "13258239832@163.com")) // .contact(new Contact("jerry","http://localhost:8081/doc.html#", "13258239832@163.com"))
// .version("1.0") // .version("1.0")
// .license("jerry") // .license("jerry")
// .build(); // .build();
// } // }
//
//} //}

@ -1,83 +1,83 @@
package jnpf.config; //package jnpf.config;
//
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; //import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import io.swagger.annotations.ApiOperation; //import io.swagger.annotations.ApiOperation;
import jnpf.util.Constants; //import jnpf.util.Constants;
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 springfox.documentation.builders.ApiInfoBuilder; //import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors; //import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors; //import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi; //import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.*; //import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType; //import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext; //import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket; //import springfox.documentation.spring.web.plugins.Docket;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
/** ///**
* // *
* @author Allen Pan // * @author Allen Pan
* @version V3.4.1 // * @version V3.4.1
* @copyright // * @copyright 长江云息
* @date 2021/3/16 8:56 // * @date 2021/3/16 8:56
*/ // */
@Configuration //@Configuration
@EnableOpenApi //@EnableOpenApi
@EnableKnife4j //@EnableKnife4j
public class SwaggerConfig { //public class SwaggerConfig {
//
@Bean // @Bean
public Docket loginApi() { // public Docket loginApi() {
return new Docket(DocumentationType.OAS_30) // return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo()) // .apiInfo(apiInfo())
.pathMapping("/") // .pathMapping("/")
.select() // 选择那些路径和api会生成document // .select() // 选择那些路径和api会生成document
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
//不显示错误的接口地址 // //不显示错误的接口地址
.build() // .build()
.securitySchemes(securitySchemes()) // .securitySchemes(securitySchemes())
.securityContexts(securityContexts()); // .securityContexts(securityContexts());
} // }
//
/** // /**
* tokenAuthorization // * 安全模式这里指定token通过Authorization头请求头传递
*/ // */
private List<SecurityScheme> securitySchemes() { // private List<SecurityScheme> securitySchemes() {
List<SecurityScheme> apiKeyList = new ArrayList<>(); // List<SecurityScheme> apiKeyList = new ArrayList<>();
apiKeyList.add(new ApiKey(Constants.AUTHORIZATION, Constants.AUTHORIZATION, "header")); // apiKeyList.add(new ApiKey(Constants.AUTHORIZATION, Constants.AUTHORIZATION, "header"));
return apiKeyList; // return apiKeyList;
} // }
//
/** // /**
* // * 授权信息全局应用
*/ // */
private List<SecurityContext> securityContexts() { // private List<SecurityContext> securityContexts() {
List<SecurityContext> securityContexts = new ArrayList<>(); // List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(SecurityContext.builder() // securityContexts.add(SecurityContext.builder()
.securityReferences(defaultAuth()) // .securityReferences(defaultAuth())
.forPaths(PathSelectors.any()).build()); // .forPaths(PathSelectors.any()).build());
return securityContexts; // return securityContexts;
} // }
//
private List<SecurityReference> defaultAuth() { // private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); // AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; // AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope; // authorizationScopes[0] = authorizationScope;
List<SecurityReference> securityReferences = new ArrayList<>(); // List<SecurityReference> securityReferences = new ArrayList<>();
securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); // securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
return securityReferences; // return securityReferences;
} // }
//
private ApiInfo apiInfo() { // private ApiInfo apiInfo() {
return new ApiInfoBuilder() // return new ApiInfoBuilder()
.title("接口文档") // .title("接口文档")
//描述 // //描述
.description("LINKAGE-BOOT接口文档") // .description("LINKAGE-BOOT接口文档")
.version(Constants.SWAGGER_VERSION) // .version(Constants.SWAGGER_VERSION)
.build(); // .build();
} // }
//
} //}

@ -10,6 +10,9 @@ import org.springframework.security.config.annotation.authentication.builders.Au
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/** /**
* *
@ -20,13 +23,23 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
*/ */
@Configuration @Configuration
@EnableWebSecurity @EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter { public class SecurityConfig extends WebSecurityConfigurerAdapter implements WebMvcConfigurer {
@Autowired @Autowired
private UserDetailsServiceImpl userDetailsService; //private UserDetailsServiceImpl userDetailsService;
private UserDetailsService userDetailsService;
@Autowired @Autowired
private MyPasswordEncoder passwordEncoder; private MyPasswordEncoder passwordEncoder;
private static final String[] URL_WHITELIST = {
"/favicon.ico",
"/webjars/**",
"/img.icons/**",
"/swagger-resources/**",
"/v3/api-docs/**",
"/swagger-ui/**",
"/doc.html",
};
/** /**
* *
@ -39,8 +52,29 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
http.headers().frameOptions().disable(); http.headers().frameOptions().disable();
http.csrf().disable().authorizeRequests() http.csrf().disable().authorizeRequests()
.antMatchers("/RSA/publicKey").permitAll() .antMatchers("/RSA/publicKey").permitAll()
.antMatchers("/jmreport/**").anonymous(); .antMatchers("/jmreport/**").anonymous()
// 配置拦截规则
.and()
.authorizeRequests()
.antMatchers(URL_WHITELIST).permitAll()
.anyRequest().authenticated();
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations(
"classpath:/static/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
} }
/** /**

@ -44,10 +44,10 @@
<artifactId>spring-boot-starter-aop</artifactId> <artifactId>spring-boot-starter-aop</artifactId>
</dependency> </dependency>
<!-- swagger --> <!-- swagger -->
<dependency> <!-- <dependency>-->
<groupId>io.springfox</groupId> <!-- <groupId>io.springfox</groupId>-->
<artifactId>springfox-boot-starter</artifactId> <!-- <artifactId>springfox-boot-starter</artifactId>-->
</dependency> <!-- </dependency>-->
<!-- mybatisplus --> <!-- mybatisplus -->
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>

@ -43,8 +43,8 @@
<mybatis-plus.generator.vesion>3.4.1</mybatis-plus.generator.vesion> <mybatis-plus.generator.vesion>3.4.1</mybatis-plus.generator.vesion>
<mybatis-plus.dynamic.vesion>3.5.1</mybatis-plus.dynamic.vesion> <mybatis-plus.dynamic.vesion>3.5.1</mybatis-plus.dynamic.vesion>
<mysql.version>8.0.29</mysql.version> <mysql.version>8.0.29</mysql.version>
<dm18.version>1.8.0</dm18.version> <dm18.version>1.0</dm18.version>
<kingbase.version>2.0</kingbase.version> <kingbase.version>1.0</kingbase.version>
<postgre.version>42.2.23</postgre.version> <postgre.version>42.2.23</postgre.version>
<sqlserver.version>4.0</sqlserver.version> <sqlserver.version>4.0</sqlserver.version>
<oracle.version>21.5.0.0</oracle.version> <oracle.version>21.5.0.0</oracle.version>
@ -95,17 +95,6 @@
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
<!-- Swagger 依赖配置 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>${swagger-ui.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.plugin</groupId> <groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-core</artifactId> <artifactId>spring-plugin-core</artifactId>
@ -438,11 +427,6 @@
<artifactId>signclient</artifactId> <artifactId>signclient</artifactId>
<version>${yozosign.version}</version> <version>${yozosign.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>

Loading…
Cancel
Save