Browse Source

用户权限获取

master
luoweijian 1 month ago
parent
commit
fdecffbc5f
  1. 13
      src/main/java/com/project/ding/domain/enums/UserRoleEnum.java
  2. 20
      src/main/java/com/project/ding/utils/SecurityUtils.java
  3. 5
      src/main/java/com/project/interaction/config/WebClientConfig.java

13
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<String> {
ROLE_CANDIDATE("考生") ,
ROLE_ADMIN("管理员");
private final String value;
}

20
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<String> 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);
}
/**
* 获取当前认证信息
*/

5
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))
);

Loading…
Cancel
Save