浏览代码

作者:张哲
时间:2023/01/06
类型:优化
描述:配置swagger

ZizgZh 2 年之前
父节点
当前提交
801317ee41

+ 12 - 0
pom.xml

@@ -277,6 +277,18 @@
             <version>4.0.0.31</version>
         </dependency>
 
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.7.0</version>
+        </dependency>
+        <!--swagger ui-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.7.0</version>
+        </dependency>
+
 
     </dependencies>
 

+ 0 - 1
src/main/java/com/redxun/JpaasKnowledgeApp.java

@@ -27,7 +27,6 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
 @EnableDiscoveryClient
 @SpringBootApplication(scanBasePackages = {"com.redxun"})
 @EnableBinding({ LogOutput.class,ErrLogOutput.class, MsgOutput.class})
-@EnableSwagger2
 public class JpaasKnowledgeApp {
 
     public static void main(String[]args) {

+ 1 - 1
src/main/java/com/redxun/config/ClientWebsecurityConfigurer.java

@@ -39,7 +39,7 @@ public class ClientWebsecurityConfigurer extends WebSecurityConfigurerAdapter {
                 .authorizeRequests()
                 .antMatchers("/", "/login", "/demo/**","/certificate/**","/api-knowledge/**","/api/api-knowledge/**",
                         "/actuator/**",
-                        "/restApi/**","/global/**", "/druid/**", "/v2/api-docs/**","/swagger*").permitAll()
+                        "/restApi/**","/global/**", "/druid/**", "/v2/api-docs/**","/swagger-ui.html").permitAll()
                 .anyRequest().authenticated()
                 .withObjectPostProcessor(urlObjectPostProcessor());
 

+ 44 - 0
src/main/java/com/redxun/config/ServletContextConfig.java

@@ -0,0 +1,44 @@
+package com.redxun.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+/**
+ * 文件名: ServletContextConfig
+ * 作者: Zizg
+ * 时间: 2022/01/06
+ * 描述: 拦截器配置
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@Configuration
+public class ServletContextConfig extends WebMvcConfigurationSupport {
+
+    /**
+     * 发现如果继承了WebMvcConfigurationSupport,则在yml中配置的相关内容会失效。
+     * 需要重新指定静态资源
+     * @param registry
+     */
+    @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/");
+        super.addResourceHandlers(registry);
+    }
+
+
+    /**
+     * 配置servlet处理
+     */
+    @Override
+    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
+        configurer.enable();
+    }
+
+}

+ 78 - 0
src/main/java/com/redxun/config/Swagger2Config.java

@@ -0,0 +1,78 @@
+package com.redxun.config;
+
+import com.google.common.base.Predicates;
+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.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.Arrays;
+import java.util.List;
+
+/**
+ * 文件名: Swagger2Config
+ * 作者: Zizg
+ * 时间: 2022/01/06
+ * 描述: 接口文档配置
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@Configuration
+@EnableSwagger2
+public class Swagger2Config {
+
+    @Bean
+    public Docket adminApiConfig(){
+
+        return new Docket(DocumentationType.SWAGGER_2)
+                .groupName("知识管理系统")
+                .apiInfo(adminApiInfo())
+                .select()
+                //只显示admin路径下的页面
+                .paths(Predicates.and(PathSelectors.regex("/api-knowledge/.*")))
+                .build()
+                .securityContexts(Arrays.asList(securityContexts()))
+                .securitySchemes(unifiedAuth());
+
+    }
+
+    private ApiInfo adminApiInfo(){
+
+        return new ApiInfoBuilder()
+                .title("知识管理系统-API文档")
+                .description("本文档描述了知识管理系统接口定义")
+                .version("1.0")
+                .contact(new Contact("Zizg", "", ""))
+                .build();
+    }
+
+    // 添加配置全局token
+    private static List<ApiKey> unifiedAuth() {
+        List<ApiKey> arrayList = new ArrayList<>();
+        arrayList.add(new ApiKey("token", "token", "header"));
+        return arrayList;
+    }
+
+    private SecurityContext securityContexts() {
+        return SecurityContext.builder()
+                .securityReferences(defaultAuth())
+                .forPaths(PathSelectors.any())
+                .build();
+    }
+
+    private List<SecurityReference> defaultAuth() {
+        AuthorizationScope authorizationScope = new AuthorizationScope("global", "全局token");
+        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+        authorizationScopes[0] = authorizationScope;
+        return Arrays.asList(new SecurityReference("token", authorizationScopes));
+    }
+
+
+}