Просмотр исходного кода

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

Ir0nMax 1 год назад
Родитель
Сommit
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);
 
         var browser = "";