fix(aop): 使用工具类解析真实客户端IP

原代码直接取 request.getRemoteHost(),在反向代理场景下会拿到代理服务器地址。
新增 RequestIpUtils.resolveClientIp() 按 X-Forwarded-For 等头部逐级解析,确保日志记录的 IP 为真实用户地址。
This commit is contained in:
2026-03-24 14:21:34 +08:00
parent 7b4a874283
commit ca670287d8

View File

@@ -2,6 +2,7 @@ package com.yolo.keyborad.aop;
import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
import com.yolo.keyborad.utils.RequestIpUtils;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -44,9 +45,10 @@ public class LogInterceptor {
String reqParam = "[" + StringUtils.join(args, ", ") + "]";
String tokenString = httpServletRequest.getHeader("auth-token");
Object userId = StpUtil.getLoginIdByToken(tokenString);
String ip = RequestIpUtils.resolveClientIp(httpServletRequest);
// 输出请求日志
log.info("request startid: {}, userId:{}, path: {}, ip: {}, params: {}",requestId, userId, url,
httpServletRequest.getRemoteHost(), reqParam);
ip, reqParam);
// 执行原方法
Object result = point.proceed();
// 输出响应日志