fix
This commit is contained in:
parent
c491ab9cc2
commit
f70867e2c1
@ -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", "无访问权限"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user