From fdecffbc5fa7255534139611a7883c1be3818313 Mon Sep 17 00:00:00 2001 From: luoweijian <1329394916@qq.com> Date: Thu, 5 Feb 2026 08:55:54 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=9D=83=E9=99=90=E8=8E=B7?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ding/domain/enums/UserRoleEnum.java | 13 ++++++++++++ .../com/project/ding/utils/SecurityUtils.java | 20 +++++++++++++++++++ .../interaction/config/WebClientConfig.java | 5 ++--- 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/project/ding/domain/enums/UserRoleEnum.java diff --git a/src/main/java/com/project/ding/domain/enums/UserRoleEnum.java b/src/main/java/com/project/ding/domain/enums/UserRoleEnum.java new file mode 100644 index 0000000..684232a --- /dev/null +++ b/src/main/java/com/project/ding/domain/enums/UserRoleEnum.java @@ -0,0 +1,13 @@ +package com.project.ding.domain.enums; + +import com.project.base.domain.enums.HasValueEnum; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum UserRoleEnum implements HasValueEnum { + ROLE_CANDIDATE("考生") , + ROLE_ADMIN("管理员"); + private final String value; +} diff --git a/src/main/java/com/project/ding/utils/SecurityUtils.java b/src/main/java/com/project/ding/utils/SecurityUtils.java index 885a9ee..9ddf8f7 100644 --- a/src/main/java/com/project/ding/utils/SecurityUtils.java +++ b/src/main/java/com/project/ding/utils/SecurityUtils.java @@ -2,7 +2,10 @@ package com.project.ding.utils; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.GrantedAuthority; +import java.util.Collections; +import java.util.List; import java.util.Optional; public class SecurityUtils { @@ -15,6 +18,23 @@ public class SecurityUtils { .orElse(null); } + public static List getUserRoles() { + return getAuthentication() + .map(auth -> auth.getAuthorities().stream() + .map(GrantedAuthority::getAuthority) + .toList()) + .orElse(Collections.emptyList()); + } + + /** + * 判断当前用户是否拥有某个角色 + * @param role 角色名称 + */ + public static boolean hasRole(String role) { + return getUserRoles().contains(role); + } + + /** * 获取当前认证信息 */ diff --git a/src/main/java/com/project/interaction/config/WebClientConfig.java b/src/main/java/com/project/interaction/config/WebClientConfig.java index 9c3665b..0b2f2bb 100644 --- a/src/main/java/com/project/interaction/config/WebClientConfig.java +++ b/src/main/java/com/project/interaction/config/WebClientConfig.java @@ -25,10 +25,9 @@ public class WebClientConfig { .responseTimeout(Duration.ofSeconds(5)) .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000) .doOnConnected(conn -> conn - // 2. 读超时:与全局一致,60秒。 + // 读超时 .addHandlerLast(new ReadTimeoutHandler(60, TimeUnit.SECONDS)) - // 3. 写超时:30秒。 - // 因为你推送的是大量 Word 里的文本知识点,网络传输压力比普通接口大。 + // 写超时 .addHandlerLast(new WriteTimeoutHandler(30, TimeUnit.SECONDS)) );