From 7c07ae9421850650b9da6d453c498cc3049a83a3 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 26 十二月 2023 15:03:00 +0800 Subject: [PATCH] 修复文档页面不可用BUG,支持设置认证消息头来方便调用其他接口 --- src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java | 2 +- src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java | 5 ++++- src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java | 9 ++++++++- src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java | 3 ++- pom.xml | 15 +++++---------- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 5b3e945..5f077f1 100644 --- a/pom.xml +++ b/pom.xml @@ -163,21 +163,16 @@ </dependency> <!--鍦ㄧ嚎鏂囨。 --> + <!--鍦ㄧ嚎鏂囨。 --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> - <version>1.7.0</version> - <exclusions> - <exclusion> - <groupId>org.yaml</groupId> - <artifactId>snakeyaml</artifactId> - </exclusion> - </exclusions> + <version>1.6.10</version> </dependency> <dependency> - <groupId>org.yaml</groupId> - <artifactId>snakeyaml</artifactId> - <version>2.2</version> + <groupId>org.springdoc</groupId> + <artifactId>springdoc-openapi-security</artifactId> + <version>1.6.10</version> </dependency> <dependency> diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java index 587518f..0a472f8 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/SpringDocConfig.java @@ -1,9 +1,12 @@ package com.genersoft.iot.vmp.conf; +import com.genersoft.iot.vmp.conf.security.JwtUtils; +import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.security.SecurityScheme; import org.springframework.core.annotation.Order; import org.springdoc.core.GroupedOpenApi; import org.springframework.beans.factory.annotation.Value; @@ -26,10 +29,14 @@ contact.setName("pan"); contact.setEmail("648540858@qq.com"); return new OpenAPI() + .components(new Components() + .addSecuritySchemes(JwtUtils.HEADER, new SecurityScheme() + .type(SecurityScheme.Type.HTTP) + .bearerFormat("JWT"))) .info(new Info().title("WVP-PRO 鎺ュ彛鏂囨。") .contact(contact) .description("寮�绠卞嵆鐢ㄧ殑28181鍗忚瑙嗛骞冲彴") - .version("v2.0") + .version("v3.1.0") .license(new License().name("Apache 2.0").url("http://springdoc.org"))); } diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java b/src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java index 3df7593..fcd1946 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java @@ -28,7 +28,7 @@ private static final Logger logger = LoggerFactory.getLogger(JwtUtils.class); - private static final String HEADER = "access-token"; + public static final String HEADER = "access-token"; private static final String AUDIENCE = "Audience"; diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java index 0431dcd..afc8105 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java @@ -68,6 +68,8 @@ matchers.add("/"); matchers.add("/#/**"); matchers.add("/static/**"); + matchers.add("/swagger-ui.html"); + matchers.add("/swagger-ui/"); matchers.add("/index.html"); matchers.add("/doc.html"); matchers.add("/webjars/**"); @@ -77,6 +79,7 @@ matchers.add("/api/device/query/snap/**"); matchers.add("/record_proxy/*/**"); matchers.add("/api/emit"); + matchers.add("/favicon.ico"); // 鍙互鐩存帴璁块棶鐨勯潤鎬佹暟鎹� web.ignoring().antMatchers(matchers.toArray(new String[0])); } @@ -113,7 +116,7 @@ .authorizeRequests() .requestMatchers(CorsUtils::isPreFlightRequest).permitAll() .antMatchers(userSetting.getInterfaceAuthenticationExcludes().toArray(new String[0])).permitAll() - .antMatchers("/api/user/login", "/index/hook/**").permitAll() + .antMatchers("/api/user/login", "/index/hook/**", "/swagger-ui/**", "/doc.html").permitAll() .anyRequest().authenticated() // 寮傚父澶勭悊鍣� .and() diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java index b6f9183..a2aefb1 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java @@ -14,6 +14,7 @@ import com.github.pagehelper.PageInfo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; @@ -95,7 +96,7 @@ @PostMapping("/add") - @Operation(summary = "娣诲姞鐢ㄦ埛") + @Operation(summary = "娣诲姞鐢ㄦ埛", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "username", description = "鐢ㄦ埛鍚�", required = true) @Parameter(name = "password", description = "瀵嗙爜锛堟湭md5鍔犲瘑鐨勫瘑鐮侊級", required = true) @Parameter(name = "roleId", description = "瑙掕壊ID", required = true) -- Gitblit v1.8.0