|
@@ -0,0 +1,82 @@
|
|
|
+package com.hcloud.microserver.job.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;
|
|
|
+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;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Swagger API文档相关配置
|
|
|
+ * Created by macro on 2018/4/26.
|
|
|
+ */
|
|
|
+@Configuration
|
|
|
+@EnableSwagger2
|
|
|
+@EnableKnife4j
|
|
|
+@Import(BeanValidatorPluginsConfiguration.class)
|
|
|
+public class Swagger2Config {
|
|
|
+ @Bean
|
|
|
+ public Docket createRestApi(){
|
|
|
+ return new Docket(DocumentationType.SWAGGER_2)
|
|
|
+ .apiInfo(apiInfo())
|
|
|
+ .select()
|
|
|
+ .apis(RequestHandlerSelectors.basePackage("com.hcloud.microserver.job.controller"))
|
|
|
+ .paths(PathSelectors.any())
|
|
|
+ .build()
|
|
|
+ .securitySchemes(securitySchemes())
|
|
|
+ .securityContexts(securityContexts());
|
|
|
+ }
|
|
|
+
|
|
|
+ private ApiInfo apiInfo() {
|
|
|
+ return new ApiInfoBuilder()
|
|
|
+ .title("重庆碳汇任务管理系统")
|
|
|
+ .description("重庆碳汇任务管理系统")
|
|
|
+ .contact(new Contact("carbon","",""))
|
|
|
+ .version("0.0.1")
|
|
|
+ .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("/brand/.*"));
|
|
|
+ result.add(getContextByPath("/product/.*"));
|
|
|
+ result.add(getContextByPath("/productCategory/.*"));
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+}
|