|
@@ -1,33 +1,33 @@
|
|
|
package com.lantone.common.config;
|
|
|
|
|
|
-import com.github.xiaoymin.knife4j.spring.annotations.EnableSwaggerBootstrapUi;
|
|
|
-import com.google.common.collect.Lists;
|
|
|
+import com.lantone.common.domain.SwaggerProperties;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
-import org.springframework.context.annotation.Import;
|
|
|
import org.springframework.core.annotation.Order;
|
|
|
-import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
|
|
|
import springfox.documentation.builders.ApiInfoBuilder;
|
|
|
import springfox.documentation.builders.PathSelectors;
|
|
|
import springfox.documentation.builders.RequestHandlerSelectors;
|
|
|
import springfox.documentation.service.ApiInfo;
|
|
|
import springfox.documentation.service.ApiKey;
|
|
|
import springfox.documentation.service.AuthorizationScope;
|
|
|
+import springfox.documentation.service.Contact;
|
|
|
import springfox.documentation.service.SecurityReference;
|
|
|
-import springfox.documentation.service.SecurityScheme;
|
|
|
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;
|
|
|
|
|
|
-
|
|
|
+/**
|
|
|
+ * @Description: Swagger基础配置
|
|
|
+ * @author: rengb
|
|
|
+ * @time: 2021/1/5 18:27
|
|
|
+ */
|
|
|
@Configuration
|
|
|
@EnableSwagger2
|
|
|
-@EnableSwaggerBootstrapUi
|
|
|
-@Import(BeanValidatorPluginsConfiguration.class)
|
|
|
public class SwaggerConfiguration {
|
|
|
|
|
|
@Value("${swagger.title}")
|
|
@@ -40,59 +40,68 @@ public class SwaggerConfiguration {
|
|
|
@Bean
|
|
|
@Order(value = 1)
|
|
|
public Docket groupRestApi() {
|
|
|
- return new Docket(DocumentationType.SWAGGER_2)
|
|
|
- .apiInfo(groupApiInfo())
|
|
|
+ SwaggerProperties swaggerProperties = swaggerProperties();
|
|
|
+ Docket docket = new Docket(DocumentationType.SWAGGER_2)
|
|
|
+ .apiInfo(apiInfo(swaggerProperties))
|
|
|
.select()
|
|
|
- .apis(RequestHandlerSelectors.basePackage("com.lantone"))
|
|
|
+ .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getApiBasePackage()))
|
|
|
.paths(PathSelectors.any())
|
|
|
.build();
|
|
|
-// .securityContexts(Lists.newArrayList(securityContext(), securityContext1())).securitySchemes(Lists.<SecurityScheme>newArrayList(apiKey(), apiKey1()));
|
|
|
+ if (swaggerProperties.isEnableSecurity()) {
|
|
|
+ docket.securitySchemes(securitySchemes()).securityContexts(securityContexts());
|
|
|
+ }
|
|
|
+ return docket;
|
|
|
}
|
|
|
|
|
|
- private ApiInfo groupApiInfo() {
|
|
|
+ private ApiInfo apiInfo(SwaggerProperties swaggerProperties) {
|
|
|
return new ApiInfoBuilder()
|
|
|
+ .title(swaggerProperties.getTitle())
|
|
|
+ .description(swaggerProperties.getDescription())
|
|
|
+ .contact(new Contact(swaggerProperties.getContactName(), swaggerProperties.getContactUrl(), swaggerProperties.getContactEmail()))
|
|
|
+ .version(swaggerProperties.getVersion())
|
|
|
+ .build();
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<ApiKey> securitySchemes() {
|
|
|
+ //设置请求头信息
|
|
|
+ List<ApiKey> result = new ArrayList<>();
|
|
|
+ ApiKey apiKey = new ApiKey("Authorization", "Authorization", "header");
|
|
|
+ result.add(apiKey);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<SecurityContext> securityContexts() {
|
|
|
+ //设置需要登录认证的路径
|
|
|
+ List<SecurityContext> result = new ArrayList<>();
|
|
|
+ result.add(getContextByPath("/*/.*"));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private SecurityContext getContextByPath(String pathRegex) {
|
|
|
+ return SecurityContext.builder()
|
|
|
+ .securityReferences(defaultAuth())
|
|
|
+ .forPaths(PathSelectors.regex(pathRegex))
|
|
|
+ .build();
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<SecurityReference> defaultAuth() {
|
|
|
+ List<SecurityReference> result = new ArrayList<>();
|
|
|
+ AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
|
|
|
+ AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
|
|
+ authorizationScopes[0] = authorizationScope;
|
|
|
+ result.add(new SecurityReference("Authorization", authorizationScopes));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public SwaggerProperties swaggerProperties() {
|
|
|
+ return SwaggerProperties.builder()
|
|
|
+ .apiBasePackage("com.lantone")
|
|
|
.title(swagger_title)
|
|
|
.description("<div style='font-size:14px;color:red;'>" + swagger_des + "--RESTful APIs</div>")
|
|
|
- .termsOfServiceUrl("http://localhost:10751/doc.html")
|
|
|
- .contact("894564193@qq.com")
|
|
|
+ .contactName("lantone")
|
|
|
.version(swagger_version)
|
|
|
+ .enableSecurity(true)
|
|
|
.build();
|
|
|
}
|
|
|
|
|
|
-// private ApiKey apiKey() {
|
|
|
-// return new ApiKey("BearerToken", "Authorization", "header");
|
|
|
-// }
|
|
|
-//
|
|
|
-// private ApiKey apiKey1() {
|
|
|
-// return new ApiKey("BearerToken1", "Authorization-x", "header");
|
|
|
-// }
|
|
|
-//
|
|
|
-// private SecurityContext securityContext() {
|
|
|
-// return SecurityContext.builder()
|
|
|
-// .securityReferences(defaultAuth())
|
|
|
-// .forPaths(PathSelectors.regex("/.*"))
|
|
|
-// .build();
|
|
|
-// }
|
|
|
-//
|
|
|
-// private SecurityContext securityContext1() {
|
|
|
-// return SecurityContext.builder()
|
|
|
-// .securityReferences(defaultAuth1())
|
|
|
-// .forPaths(PathSelectors.regex("/.*"))
|
|
|
-// .build();
|
|
|
-// }
|
|
|
-//
|
|
|
-// List<SecurityReference> defaultAuth() {
|
|
|
-// AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
|
|
|
-// AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
|
|
-// authorizationScopes[0] = authorizationScope;
|
|
|
-// return Lists.newArrayList(new SecurityReference("BearerToken", authorizationScopes));
|
|
|
-// }
|
|
|
-//
|
|
|
-// List<SecurityReference> defaultAuth1() {
|
|
|
-// AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
|
|
|
-// AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
|
|
|
-// authorizationScopes[0] = authorizationScope;
|
|
|
-// return Lists.newArrayList(new SecurityReference("BearerToken1", authorizationScopes));
|
|
|
-// }
|
|
|
-
|
|
|
}
|