Browse Source

集成swagger2

master
陈裕财 4 years ago
parent
commit
1b5f49637c
  1. 99
      xm-bootstrap/src/main/java/com/xm/SwaggerConfig.java
  2. 11
      xm-bootstrap/src/main/java/com/xm/WebSecurityConfig.java

99
xm-bootstrap/src/main/java/com/xm/SwaggerConfig.java

@ -0,0 +1,99 @@
package com.xm;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* api 文档,
* 生产环境需要禁止访问,每个项目需要单独引入swagger包不能继承
*
* 需要将下面路径放到 WebSecurityConfig
*
* "/swagger-ui.html",
* "/webjars/**",
* "/swagger-ui/**",
* "/swagger-resources/**",
* "/v2/*",
* "/csrf",
* "/"
*/
//@ConditionalOnProperty(havingValue = "dev",name = {"spring.profiles.active"})
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value(value = "${spring.application.name:}")
String applicationName="";
@Value(value = "${spring.application.name:}")
String springProfilesActive="";
@Value(value = "${server.port:}")
String serverPort="";
@Value(value = "${swagger2.enable:true}")
boolean enableSwagger2;
@Bean
public Docket customDocket() {
ParameterBuilder tokenPar= new ParameterBuilder();
List<Parameter> pars=new ArrayList<>();
tokenPar.name("Authorization").description("令牌 格式:【bearer 令牌值】,注意bearer后根一个空格。").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(tokenPar.build());
tokenPar.name("accessToken").description("令牌,直接填写令牌值").modelRef(new ModelRef("string")).parameterType("query").required(false).build();
pars.add(tokenPar.build());
Docket docket= new Docket(DocumentationType.SWAGGER_2).select().
apis(RequestHandlerSelectors.any())
.build().globalOperationParameters(pars)
.apiInfo(apiInfo()).enable(enableSwagger2);
/*
* 下面的语句是开启对JWT的支持当用户用Swagger调用受JWT认证保护的方法
* 必须要先提交参数例如令牌
*/
//存储用户必须提交的参数
List<ApiKey> apikey = new ArrayList();
//规定用户需要输入什么参数
apikey.add(new ApiKey("accesToken", "accesToken", "accesToken"));
docket.securitySchemes(apikey);
//以下定义如果用户JWT认证通过则在Swagger中全局有效
AuthorizationScope scope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] scopeArray = {scope};
//存储令牌和作用域
SecurityReference reference = new SecurityReference("token", scopeArray);
List refList = new ArrayList();
refList.add(reference);
SecurityContext context = SecurityContext.builder().securityReferences(refList).build();
List cxtList = new ArrayList();
cxtList.add(context);
docket.securityContexts(cxtList);
return docket;
}
private ApiInfo apiInfo() {
Contact contact = new Contact("广州擎勤网络科技有限公司", String.format("https://www.qingqinkj/api/m1/%s/swagger-ui.html",applicationName), "cyc58469@163.com");
return new ApiInfoBuilder()
.title("唛盟接口")
.description(String.format("接口文档 本地访问地址 http://localhost:%s/swagger-ui.html",serverPort))
.contact(contact)
.version("1.0.0")
.build();
}
}

11
xm-bootstrap/src/main/java/com/xm/WebSecurityConfig.java

@ -41,7 +41,16 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
"/**/xm/core/xmTask/shareTaskDetail",
"/**/xm/core/xmTask/getOutTask",
"/**/xm/core/xmBranchState/list/portal/allBranchSum",
"/**/xm/core/xmProjectState/list/portal"
"/**/xm/core/xmProjectState/list/portal",
"/swagger-ui.html",
"/webjars/**",
"/swagger-ui/**",
"/swagger-resources/**",
"/v2/*",
"/csrf",
"/"
).permitAll().
anyRequest().authenticated();

Loading…
Cancel
Save