瀏覽代碼

😎简化获取远程真实IP(用Furion自带的)

zuohuaijun 1 年之前
父節點
當前提交
da293e340f

+ 2 - 2
Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj

@@ -36,8 +36,8 @@
     <PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.5.0" />
     <PackageReference Include="SqlSugarCore" Version="5.1.4.160" />
     <PackageReference Include="SSH.NET" Version="2024.1.0" />
-    <PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.2" />
-    <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1037" />
+    <PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.3" />
+    <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1038" />
     <PackageReference Include="UAParser" Version="3.1.47" />
     <PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
   </ItemGroup>

+ 0 - 41
Admin.NET/Admin.NET.Core/Extension/HttpContextExtension.cs

@@ -1,41 +0,0 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
-//
-// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
-//
-// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
-
-using System.Net;
-
-namespace Admin.NET.Core;
-
-/// <summary>
-/// HttpContext拓展
-/// </summary>
-[SuppressSniffer]
-public static partial class HttpContextExtension
-{
-    /// <summary>
-    /// 获取客户端真实 IP 地址
-    /// </summary>
-    /// <returns>bool</returns>
-    public static string GetRemoteIp(this HttpContext httpContext)
-    {
-        var ip = string.Empty;
-        try
-        {
-            // 从 X-Forwarded-For 头获取 IP
-            ip = httpContext.Request.Headers["X-Forwarded-For"];
-            if (string.IsNullOrEmpty(ip))
-            {
-                ip = httpContext.GetRemoteIpAddressToIPv4();
-            }
-            // 验证 IP 地址有效性
-            if (!IPAddress.TryParse(ip, out _))
-            {
-                ip = null;
-            }
-        }
-        catch { }
-        return ip;
-    }
-}

+ 2 - 2
Admin.NET/Admin.NET.Core/Service/Auth/SysAuthService.cs

@@ -238,7 +238,7 @@ public class SysAuthService : IDynamicApiController, ITransient
         // ke.global.setAllHeader('Authorization', 'Bearer ' + ke.response.headers['access-token']);
 
         // 更新用户登录信息
-        user.LastLoginIp = _httpContextAccessor.HttpContext.GetRemoteIp();
+        user.LastLoginIp = _httpContextAccessor.HttpContext.GetRemoteIpAddressToIPv4(true);
         (user.LastLoginAddress, double? longitude, double? latitude) = CommonUtil.GetIpAddress(user.LastLoginIp);
         user.LastLoginTime = DateTime.Now;
         user.LastLoginDevice = CommonUtil.GetClientDeviceInfo(_httpContextAccessor.HttpContext?.Request?.Headers?.UserAgent);
@@ -277,7 +277,7 @@ public class SysAuthService : IDynamicApiController, ITransient
         // 获取水印文字(若系统水印为空则全局为空)
         var watermarkText = await _sysConfigService.GetConfigValue<string>("sys_web_watermark");
         if (!string.IsNullOrWhiteSpace(watermarkText))
-            watermarkText += $"-{user.RealName}-{_httpContextAccessor.HttpContext.GetRemoteIp()}-{DateTime.Now}";
+            watermarkText += $"-{user.RealName}"; // $"-{user.RealName}-{_httpContextAccessor.HttpContext.GetRemoteIpAddressToIPv4(true)}-{DateTime.Now}";
         return new LoginUserOutput
         {
             Id = user.Id,