diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/IpUtils.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/IpUtils.java index f88b151f..2e0398bf 100644 --- a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/IpUtils.java +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/IpUtils.java @@ -2,8 +2,12 @@ package com.orion.visor.framework.common.utils; import com.orion.ext.location.Region; import com.orion.ext.location.region.LocationRegions; +import com.orion.lang.constant.StandardHttpHeader; +import com.orion.lang.utils.Strings; import com.orion.visor.framework.common.constant.Const; +import com.orion.web.servlet.web.Servlets; +import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; @@ -21,6 +25,22 @@ public class IpUtils { private IpUtils() { } + /** + * 获取请求地址 + * + * @param request request + * @return addr + */ + public static String getRemoteAddr(HttpServletRequest request) { + // 获取实际地址 + String realIp = request.getHeader(StandardHttpHeader.X_REAL_IP); + if (!Strings.isBlank(realIp)) { + return realIp; + } + // 获取请求地址 + return Servlets.getRemoteAddr(request); + } + /** * 获取 ip 位置 * diff --git a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/Requests.java b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/Requests.java index ce553ab7..6757dd38 100644 --- a/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/Requests.java +++ b/orion-visor-framework/orion-visor-framework-common/src/main/java/com/orion/visor/framework/common/utils/Requests.java @@ -41,7 +41,7 @@ public class Requests { .map(s -> (ServletRequestAttributes) s) .map(ServletRequestAttributes::getRequest) .ifPresent(request -> { - String address = Servlets.getRemoteAddr(request); + String address = IpUtils.getRemoteAddr(request); identity.setAddress(address); identity.setLocation(IpUtils.getLocation(address)); identity.setUserAgent(Servlets.getUserAgent(request)); diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-log/src/main/java/com/orion/visor/framework/log/core/interceptor/PrettyLogPrinterInterceptor.java b/orion-visor-framework/orion-visor-spring-boot-starter-log/src/main/java/com/orion/visor/framework/log/core/interceptor/PrettyLogPrinterInterceptor.java index ed05e8b6..725a5bfe 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-log/src/main/java/com/orion/visor/framework/log/core/interceptor/PrettyLogPrinterInterceptor.java +++ b/orion-visor-framework/orion-visor-spring-boot-starter-log/src/main/java/com/orion/visor/framework/log/core/interceptor/PrettyLogPrinterInterceptor.java @@ -3,6 +3,7 @@ package com.orion.visor.framework.log.core.interceptor; import com.orion.lang.utils.Exceptions; import com.orion.lang.utils.Strings; import com.orion.lang.utils.time.Dates; +import com.orion.visor.framework.common.utils.IpUtils; import com.orion.visor.framework.common.utils.SwaggerUtils; import com.orion.visor.framework.log.configuration.config.LogPrinterConfig; import com.orion.web.servlet.web.Servlets; @@ -60,7 +61,7 @@ public class PrettyLogPrinterInterceptor extends AbstractLogPrinterInterceptor { // http if (request != null) { // remoteAddr - requestLog.append("\tremoteAddr: ").append(Servlets.getRemoteAddr(request)).append('\n'); + requestLog.append("\tremoteAddr: ").append(IpUtils.getRemoteAddr(request)).append('\n'); // header Servlets.getHeaderMap(request).forEach((hk, hv) -> { if (headerFilter.test(hk.toLowerCase())) { diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-log/src/main/java/com/orion/visor/framework/log/core/interceptor/RowLogPrinterInterceptor.java b/orion-visor-framework/orion-visor-spring-boot-starter-log/src/main/java/com/orion/visor/framework/log/core/interceptor/RowLogPrinterInterceptor.java index d05e2d64..51fe9169 100644 --- a/orion-visor-framework/orion-visor-spring-boot-starter-log/src/main/java/com/orion/visor/framework/log/core/interceptor/RowLogPrinterInterceptor.java +++ b/orion-visor-framework/orion-visor-spring-boot-starter-log/src/main/java/com/orion/visor/framework/log/core/interceptor/RowLogPrinterInterceptor.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.orion.lang.utils.Exceptions; import com.orion.lang.utils.Strings; import com.orion.lang.utils.time.Dates; +import com.orion.visor.framework.common.utils.IpUtils; import com.orion.visor.framework.common.utils.SwaggerUtils; import com.orion.visor.framework.log.configuration.config.LogPrinterConfig; import com.orion.visor.framework.log.core.enums.LogFieldConst; @@ -61,7 +62,7 @@ public class RowLogPrinterInterceptor extends AbstractLogPrinterInterceptor impl // http if (request != null) { // remoteAddr - fields.put(REMOTE_ADDR, Servlets.getRemoteAddr(request)); + fields.put(REMOTE_ADDR, IpUtils.getRemoteAddr(request)); // header Map headers = new LinkedHashMap<>(); Servlets.getHeaderMap(request).forEach((hk, hv) -> { diff --git a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/AuthenticationServiceImpl.java b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/AuthenticationServiceImpl.java index 34760beb..bfb44a34 100644 --- a/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/AuthenticationServiceImpl.java +++ b/orion-visor-module-infra/orion-visor-module-infra-service/src/main/java/com/orion/visor/module/infra/service/impl/AuthenticationServiceImpl.java @@ -97,7 +97,7 @@ public class AuthenticationServiceImpl implements AuthenticationService { // 重设用户缓存 this.setUserCache(user); // 获取登录信息 - String remoteAddr = Servlets.getRemoteAddr(servletRequest); + String remoteAddr = IpUtils.getRemoteAddr(servletRequest); String location = IpUtils.getLocation(remoteAddr); String userAgent = Servlets.getUserAgent(servletRequest); long current = System.currentTimeMillis();