add os uri auth check

This commit is contained in:
Luke.Ye 2025-07-10 14:45:52 +08:00
parent 333c30862f
commit 3cf63bb70c
2 changed files with 17 additions and 5 deletions

View File

@ -36,4 +36,7 @@ public class ConstantConfig {
public static final String DEFAULT_SLUG_ID = "87e14982-a821-48d8-9c6b-3557d0bb2f96"; public static final String DEFAULT_SLUG_ID = "87e14982-a821-48d8-9c6b-3557d0bb2f96";
public static final String KEYWORD_PATTERN_LEFT = "#"; public static final String KEYWORD_PATTERN_LEFT = "#";
public static final String KEYWORD_PATTERN_RIGHT = "#"; public static final String KEYWORD_PATTERN_RIGHT = "#";
public static final String OS_HOST = "s3.wisdompulse.cn";
} }

View File

@ -5,6 +5,7 @@ import com.google.common.collect.Lists;
import com.knowledge.base.application.service.UserAppService; import com.knowledge.base.application.service.UserAppService;
import com.knowledge.base.infrastructure.cache.iface.FileCacheService; import com.knowledge.base.infrastructure.cache.iface.FileCacheService;
import com.knowledge.base.infrastructure.config.ConstantConfig; import com.knowledge.base.infrastructure.config.ConstantConfig;
import com.knowledge.base.infrastructure.config.DynamicConfig;
import com.knowledge.base.infrastructure.north.dto.role.RoleFileRuleDTO; import com.knowledge.base.infrastructure.north.dto.role.RoleFileRuleDTO;
import com.knowledge.base.infrastructure.north.dto.role.UserRoleDTO; import com.knowledge.base.infrastructure.north.dto.role.UserRoleDTO;
import com.knowledge.base.infrastructure.north.dto.user.UserDTO; import com.knowledge.base.infrastructure.north.dto.user.UserDTO;
@ -17,9 +18,8 @@ import org.springframework.web.bind.annotation.*;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.List; import java.util.*;
import java.util.Map; import java.util.stream.Collectors;
import java.util.Optional;
@RestController @RestController
@RequestMapping("/api/v1/user") @RequestMapping("/api/v1/user")
@ -32,16 +32,19 @@ public class UserQueryController {
private final FileCacheService fileCacheService; private final FileCacheService fileCacheService;
private final DynamicConfig dynamicConfig;
@GetMapping("/check") @GetMapping("/check")
public ResponseEntity<?> check( public ResponseEntity<?> check(
@CookieValue(value = ConstantConfig.COOKIE_KEY, required = false) String cookieToken, @CookieValue(value = ConstantConfig.COOKIE_KEY, required = false) String cookieToken,
@RequestHeader(value = "Authorization", required = false) String headerToken, @RequestHeader(value = "Authorization", required = false) String headerToken,
@RequestHeader(value = "X-Original-URI", required = false) String originalUri @RequestHeader(value = "X-Original-URI", required = false) String originalUri,
@RequestHeader(value = "X-Original-HOST", required = false, defaultValue = StrUtil.EMPTY) String host
) { ) {
String token = headerToken != null ? headerToken : cookieToken; String token = headerToken != null ? headerToken : cookieToken;
originalUri = URLDecoder.decode(originalUri, StandardCharsets.UTF_8); originalUri = URLDecoder.decode(originalUri, StandardCharsets.UTF_8);
LOGGER.info("[权限校验] token={}, originalUri={}", headerToken != null ? headerToken : cookieToken, originalUri); LOGGER.info("[权限校验] token={}, host={}, originalUri={}", headerToken != null ? headerToken : cookieToken, host, originalUri);
if (token == null || token.isBlank()) { if (token == null || token.isBlank()) {
LOGGER.warn("[权限校验] 未提供token拒绝访问"); LOGGER.warn("[权限校验] 未提供token拒绝访问");
@ -57,6 +60,12 @@ public class UserQueryController {
Long userId = userTokenOpt.get().getUserId(); Long userId = userTokenOpt.get().getUserId();
LOGGER.info("[权限校验] 解析到userId={}", userId); LOGGER.info("[权限校验] 解析到userId={}", userId);
// os的权限校验很简单token有效即可
if(ConstantConfig.OS_HOST.equals(host)) {
LOGGER.info("[权限校验] 访问通过: userId={}, host={}, uri={}", userId, host, originalUri);
return ResponseEntity.ok(Map.of("code", 0, "msg", "权限校验通过"));
}
// 查询用户角色 // 查询用户角色
List<UserRoleDTO> userRoles = userAppService.listUserRoles(userId); List<UserRoleDTO> userRoles = userAppService.listUserRoles(userId);
if (userRoles == null || userRoles.isEmpty()) { if (userRoles == null || userRoles.isEmpty()) {