整合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})
@EnableScheduling
public class LinkageAdminApplication extends SpringBootServletInitializer implements CommandLineRunner {
public static void main(String[] args) {

@ -3,6 +3,7 @@ package jnpf.filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
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 java.util.ArrayList;
@ -25,7 +26,24 @@ public class WebFilterConfig implements WebMvcConfigurer {
//不拦截的路径
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 (){
List<String> list = new ArrayList<>();
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/oauth/ImageCode/{codeLength}/{timestamp}");
list.add("/api/oauth/getConfig/{account}");
list.add("/error");
list.add("/favicon.ico");
return list;
}

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

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

@ -11,7 +11,15 @@
//import springfox.documentation.service.Contact;
//import springfox.documentation.spi.DocumentationType;
//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
//@EnableOpenApi
//@EnableKnife4j
@ -34,11 +42,10 @@
// return new ApiInfoBuilder()
// .title("SwaggerUI接口文档")
// .description("接口文档Swagger-Bootstrap版")
// .termsOfServiceUrl("http://localhost:30000/swagger-ui/index.html#/")
// .contact(new Contact("jerry","http://localhost:30000/doc.html#", "13258239832@163.com"))
// .termsOfServiceUrl("http://localhost:8081/swagger-ui/index.html#/")
// .contact(new Contact("jerry","http://localhost:8081/doc.html#", "13258239832@163.com"))
// .version("1.0")
// .license("jerry")
// .build();
// }
//
//}

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

@ -43,8 +43,8 @@
<mybatis-plus.generator.vesion>3.4.1</mybatis-plus.generator.vesion>
<mybatis-plus.dynamic.vesion>3.5.1</mybatis-plus.dynamic.vesion>
<mysql.version>8.0.29</mysql.version>
<dm18.version>1.8.0</dm18.version>
<kingbase.version>2.0</kingbase.version>
<dm18.version>1.0</dm18.version>
<kingbase.version>1.0</kingbase.version>
<postgre.version>42.2.23</postgre.version>
<sqlserver.version>4.0</sqlserver.version>
<oracle.version>21.5.0.0</oracle.version>
@ -95,17 +95,6 @@
<scope>import</scope>
</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>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-core</artifactId>
@ -438,11 +427,6 @@
<artifactId>signclient</artifactId>
<version>${yozosign.version}</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>
</dependencyManagement>

Loading…
Cancel
Save