Преглед изворни кода

日志记录时,优先获取 X-Forwarded-For 头部信息携带的IP地址(如nginx代理配置转发)

Ir0nMax пре 1 година
родитељ
комит
2bcd8a06c2
1 измењених фајлова са 8 додато и 1 уклоњено
  1. 8 1
      Admin.NET/Admin.NET.Core/Logging/DatabaseLoggingWriter.cs

+ 8 - 1
Admin.NET/Admin.NET.Core/Logging/DatabaseLoggingWriter.cs

@@ -72,7 +72,14 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter, IDisposable
             }
             }
         }
         }
 
 
-        string remoteIPv4 = loggingMonitor.remoteIPv4;
+        // 优先获取 X-Forwarded-For 头部信息携带的IP地址(如nginx代理配置转发)
+        string? remoteIPv4 = ((JArray)loggingMonitor.requestHeaders)
+            .OfType<JObject>()
+            .FirstOrDefault(header => (string)header["key"] == "X-Forwarded-For")?["value"]?.ToString();
+
+        if (string.IsNullOrEmpty(remoteIPv4))
+            remoteIPv4 = loggingMonitor.remoteIPv4;
+
         (string ipLocation, double? longitude, double? latitude) = GetIpAddress(remoteIPv4);
         (string ipLocation, double? longitude, double? latitude) = GetIpAddress(remoteIPv4);
 
 
         var browser = "";
         var browser = "";