This commit is contained in:
luke 2025-06-09 19:55:09 +08:00
parent c491ab9cc2
commit f70867e2c1

View File

@ -14,7 +14,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
@ -32,12 +31,11 @@ public class UserQueryController {
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,
HttpServletRequest request @RequestHeader(value = "X-Original-URI", required = false) String originalUri
) { ) {
String token = headerToken != null ? headerToken : cookieToken; String token = headerToken != null ? headerToken : cookieToken;
String requestUri = request.getRequestURI();
LOGGER.info("[权限校验] token={}, uri={}", token, requestUri); LOGGER.info("[权限校验] token={}, originalUri={}", headerToken != null ? headerToken : cookieToken, originalUri);
if (token == null || token.isBlank()) { if (token == null || token.isBlank()) {
LOGGER.warn("[权限校验] 未提供token拒绝访问"); LOGGER.warn("[权限校验] 未提供token拒绝访问");
@ -89,24 +87,24 @@ public class UserQueryController {
// 管理员全访问pattern为/ pattern为.* 都放行 // 管理员全访问pattern为/ pattern为.* 都放行
if ("/".equals(pattern) || ".*".equals(pattern)) { if ("/".equals(pattern) || ".*".equals(pattern)) {
LOGGER.info("[权限校验] 用户[{}]的角色规则[{}]允许全路径访问: {}", userId, pattern, requestUri); LOGGER.info("[权限校验] 用户[{}]的角色规则[{}]允许全路径访问: {}", userId, pattern, originalUri);
hasPermission = true; hasPermission = true;
break; break;
} }
// 先前缀匹配再正则匹配 // 先前缀匹配再正则匹配
if (requestUri.startsWith(pattern) || requestUri.matches(pattern)) { if (originalUri.startsWith(pattern) || originalUri.matches(pattern)) {
LOGGER.info("[权限校验] 用户[{}]的角色规则[{}]允许访问: {}", userId, pattern, requestUri); LOGGER.info("[权限校验] 用户[{}]的角色规则[{}]允许访问: {}", userId, pattern, originalUri);
hasPermission = true; hasPermission = true;
break; break;
} }
} }
if (hasPermission) { if (hasPermission) {
LOGGER.info("[权限校验] 访问通过: userId={}, uri={}", userId, requestUri); LOGGER.info("[权限校验] 访问通过: userId={}, uri={}", userId, originalUri);
return ResponseEntity.ok(Map.of("code", 0, "msg", "权限校验通过")); return ResponseEntity.ok(Map.of("code", 0, "msg", "权限校验通过"));
} else { } else {
LOGGER.warn("[权限校验] 拒绝访问: userId={}, uri={}, 无匹配规则", userId, requestUri); LOGGER.warn("[权限校验] 拒绝访问: userId={}, uri={}, 无匹配规则", userId, originalUri);
return ResponseEntity.status(403).body(Map.of("code", 403, "msg", "无访问权限")); return ResponseEntity.status(403).body(Map.of("code", 403, "msg", "无访问权限"));
} }
} }