fix(aop): 使用工具类解析真实客户端IP
原代码直接取 request.getRemoteHost(),在反向代理场景下会拿到代理服务器地址。 新增 RequestIpUtils.resolveClientIp() 按 X-Forwarded-For 等头部逐级解析,确保日志记录的 IP 为真实用户地址。
This commit is contained in:
@@ -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 start,id: {}, userId:{}, path: {}, ip: {}, params: {}",requestId, userId, url,
|
||||
httpServletRequest.getRemoteHost(), reqParam);
|
||||
ip, reqParam);
|
||||
// 执行原方法
|
||||
Object result = point.proceed();
|
||||
// 输出响应日志
|
||||
|
||||
Reference in New Issue
Block a user