build:10.5.1

fix: 反向代理正确获取客户端IP

refactor: 添加demo站点域名
This commit is contained in:
Diego
2025-04-22 11:45:14 +08:00
parent 9e7c348b15
commit 58f8b23b7c
18 changed files with 27 additions and 23 deletions

View File

@@ -20,11 +20,14 @@ A cross-platform, high-performance edge data collection gateway based on net9.
## Demo ## Demo
 
[Demo](http://47.119.161.158:5000/) [Demo](https://demo.thingsgateway.cn/)
 
Account: **SuperAdmin** Account: **SuperAdmin**
 
Password: **111111** Password: **111111**
 
**In the upper-right corner, switch to the IoT Gateway module in the personal popup box** **In the upper-right corner, switch to the IoT Gateway module in the personal popup box**

View File

@@ -13,7 +13,7 @@
## 演示 ## 演示
[ThingsGateway演示地址](http://47.119.161.158:5000/) [ThingsGateway演示地址](https://demo.thingsgateway.cn/)
账户 : **SuperAdmin** 账户 : **SuperAdmin**

View File

@@ -137,7 +137,7 @@ public sealed class OperDescAttribute : MoAttribute
Name = (localizerType == null ? App.CreateLocalizerByType(typeof(OperDescAttribute)) : App.CreateLocalizerByType(localizerType))![Description], Name = (localizerType == null ? App.CreateLocalizerByType(typeof(OperDescAttribute)) : App.CreateLocalizerByType(localizerType))![Description],
Category = LogCateGoryEnum.Operate, Category = LogCateGoryEnum.Operate,
ExeStatus = true, ExeStatus = true,
OpIp = AppService?.RemoteIpAddress?.MapToIPv4()?.ToString() ?? string.Empty, OpIp = AppService?.RemoteIpAddress ?? string.Empty,
OpBrowser = clientInfo?.UA?.Family + clientInfo?.UA?.Major, OpBrowser = clientInfo?.UA?.Family + clientInfo?.UA?.Major,
OpOs = clientInfo?.OS?.Family + clientInfo?.OS?.Major, OpOs = clientInfo?.OS?.Family + clientInfo?.OS?.Major,
OpTime = DateTime.Now, OpTime = DateTime.Now,

View File

@@ -72,7 +72,7 @@ public class AppService : IAppService
} }
public ClaimsPrincipal? User => App.User; public ClaimsPrincipal? User => App.User;
public IPAddress? RemoteIpAddress => App.HttpContext?.Connection?.RemoteIpAddress; public string? RemoteIpAddress => App.HttpContext?.GetRemoteIpAddressToIPv4();
public int LocalPort => App.HttpContext.Connection.LocalPort; public int LocalPort => App.HttpContext.Connection.LocalPort;
} }

View File

@@ -24,7 +24,7 @@ public class HybridAppService : IAppService
{ {
var str = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"; var str = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0";
ClientInfo = Parser.GetDefault().Parse(str); ClientInfo = Parser.GetDefault().Parse(str);
RemoteIpAddress = IPAddress.Parse("127.0.0.1"); RemoteIpAddress = "127.0.0.1";
} }
public ClientInfo? ClientInfo { get; } public ClientInfo? ClientInfo { get; }
@@ -56,7 +56,7 @@ public class HybridAppService : IAppService
} }
} }
public IPAddress? RemoteIpAddress { get; } public string? RemoteIpAddress { get; }
public string GetReturnUrl(string returnUrl) public string GetReturnUrl(string returnUrl)
{ {

View File

@@ -31,7 +31,7 @@ public interface IAppService
/// <summary> /// <summary>
/// RemoteIpAddress /// RemoteIpAddress
/// </summary> /// </summary>
public IPAddress? RemoteIpAddress { get; } public string? RemoteIpAddress { get; }
/// <summary> /// <summary>
/// GetReturnUrl /// GetReturnUrl

View File

@@ -105,7 +105,7 @@ public class AuthService : IAuthService
{ {
var loginEvent = new LoginEvent var loginEvent = new LoginEvent
{ {
Ip = _appService.RemoteIpAddress?.MapToIPv4()?.ToString(), Ip = _appService.RemoteIpAddress,
SysUser = userinfo, SysUser = userinfo,
VerificatId = verificatId VerificatId = verificatId
}; };
@@ -236,7 +236,7 @@ public class AuthService : IAuthService
//登录事件参数 //登录事件参数
var logingEvent = new LoginEvent var logingEvent = new LoginEvent
{ {
Ip = _appService.RemoteIpAddress?.MapToIPv4()?.ToString(), Ip = _appService.RemoteIpAddress,
Device = App.GetService<IAppService>().ClientInfo?.OS?.ToString(), Device = App.GetService<IAppService>().ClientInfo?.OS?.ToString(),
Expire = expire, Expire = expire,
SysUser = sysUser, SysUser = sysUser,

View File

@@ -298,9 +298,9 @@ public class Startup : AppStartup
public void Use(IApplicationBuilder applicationBuilder, IWebHostEnvironment env) public void Use(IApplicationBuilder applicationBuilder, IWebHostEnvironment env)
{ {
var app = (WebApplication)applicationBuilder; var app = (WebApplication)applicationBuilder;
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All, KnownNetworks = { }, KnownProxies = { } });
app.UseBootstrapBlazor(); app.UseBootstrapBlazor();
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All });
// 启用本地化 // 启用本地化
var option = app.Services.GetService<IOptions<RequestLocalizationOptions>>(); var option = app.Services.GetService<IOptions<RequestLocalizationOptions>>();

View File

@@ -106,7 +106,7 @@ public static class HttpContextExtensions
/// <param name="context"></param> /// <param name="context"></param>
/// <param name="xff">是否优先取 X-Forwarded-For</param> /// <param name="xff">是否优先取 X-Forwarded-For</param>
/// <returns></returns> /// <returns></returns>
public static string GetRemoteIpAddressToIPv4(this HttpContext context, bool xff = false) public static string GetRemoteIpAddressToIPv4(this HttpContext context, bool xff = true)
{ {
var ipv4 = context.Connection.RemoteIpAddress?.MapToIPv4()?.ToString(); var ipv4 = context.Connection.RemoteIpAddress?.MapToIPv4()?.ToString();

View File

@@ -1,8 +1,8 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<PluginVersion>10.4.22</PluginVersion> <PluginVersion>10.5.1</PluginVersion>
<ProPluginVersion>10.4.22</ProPluginVersion> <ProPluginVersion>10.5.1</ProPluginVersion>
<AuthenticationVersion>2.1.7</AuthenticationVersion> <AuthenticationVersion>2.1.7</AuthenticationVersion>
</PropertyGroup> </PropertyGroup>

View File

@@ -13,6 +13,7 @@ using BootstrapBlazor.Components;
using Mapster; using Mapster;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using SqlSugar; using SqlSugar;
@@ -139,7 +140,7 @@ public class ControlController : ControllerBase
} }
} }
return await GlobalData.RpcService.InvokeDeviceMethodAsync($"WebApi-{UserManager.UserAccount}-{App.HttpContext.Connection.RemoteIpAddress.MapToIPv4()}", deviceDatas).ConfigureAwait(false); return await GlobalData.RpcService.InvokeDeviceMethodAsync($"WebApi-{UserManager.UserAccount}-{App.HttpContext?.GetRemoteIpAddressToIPv4()}", deviceDatas).ConfigureAwait(false);
} }

View File

@@ -20,7 +20,7 @@
<h4> <h4>
<a id="user-content-演示" class="anchor" href="#%E6%BC%94%E7%A4%BA"></a>演示 <a id="user-content-演示" class="anchor" href="#%E6%BC%94%E7%A4%BA"></a>演示
</h4> </h4>
<p><a href="http://47.119.161.158:5000/">ThingsGateway演示地址</a></p> <p><a href="https://demo.thingsgateway.cn/">ThingsGateway演示地址</a></p>
<p>账户 : <strong>SuperAdmin</strong></p> <p>账户 : <strong>SuperAdmin</strong></p>
<p>密码 : <strong>111111</strong></p> <p>密码 : <strong>111111</strong></p>
<p><strong>右上角个人弹出框中,切换到物联网关模块</strong></p> <p><strong>右上角个人弹出框中,切换到物联网关模块</strong></p>

View File

@@ -280,9 +280,9 @@ public class Startup : AppStartup
public void Use(IApplicationBuilder applicationBuilder, IWebHostEnvironment env) public void Use(IApplicationBuilder applicationBuilder, IWebHostEnvironment env)
{ {
var app = (WebApplication)applicationBuilder; var app = (WebApplication)applicationBuilder;
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All, KnownNetworks = { }, KnownProxies = { } });
app.UseBootstrapBlazor(); app.UseBootstrapBlazor();
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All });
// 启用本地化 // 启用本地化
var option = app.Services.GetService<IOptions<RequestLocalizationOptions>>(); var option = app.Services.GetService<IOptions<RequestLocalizationOptions>>();

View File

@@ -298,9 +298,10 @@ public class Startup : AppStartup
public void Use(IApplicationBuilder applicationBuilder, IWebHostEnvironment env) public void Use(IApplicationBuilder applicationBuilder, IWebHostEnvironment env)
{ {
var app = (WebApplication)applicationBuilder; var app = (WebApplication)applicationBuilder;
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All, KnownNetworks = { }, KnownProxies = { } });
app.UseBootstrapBlazor(); app.UseBootstrapBlazor();
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All });
// 启用本地化 // 启用本地化
var option = app.Services.GetService<IOptions<RequestLocalizationOptions>>(); var option = app.Services.GetService<IOptions<RequestLocalizationOptions>>();

View File

@@ -7,7 +7,7 @@
"ASPNETCORE_ENVIRONMENT": "Development" "ASPNETCORE_ENVIRONMENT": "Development"
}, },
"dotnetRunMessages": true, "dotnetRunMessages": true,
"applicationUrl": "http://localhost:5000" "applicationUrl": "http://*:5000"
}, },
"demo": { "demo": {
"commandName": "Project", "commandName": "Project",
@@ -16,7 +16,7 @@
"ASPNETCORE_ENVIRONMENT": "Demo" "ASPNETCORE_ENVIRONMENT": "Demo"
}, },
"dotnetRunMessages": true, "dotnetRunMessages": true,
"applicationUrl": "http://localhost:5000" "applicationUrl": "http://*:5000"
}, },
"IIS Express": { "IIS Express": {
@@ -32,7 +32,7 @@
"windowsAuthentication": false, "windowsAuthentication": false,
"anonymousAuthentication": true, "anonymousAuthentication": true,
"iisExpress": { "iisExpress": {
"applicationUrl": "http://localhost:59494/", "applicationUrl": "http://*:59494/",
"sslPort": 44372 "sslPort": 44372
} }
} }

View File

@@ -1,5 +1,4 @@
{ {
"urls": "http://*:5000",
"ConfigurationScanDirectories": [ "Configuration", "" ], // 扫描配置文件json文件夹自动合并该文件夹里面所有json文件 "ConfigurationScanDirectories": [ "Configuration", "" ], // 扫描配置文件json文件夹自动合并该文件夹里面所有json文件
"IgnoreConfigurationFiles": [ "" ], "IgnoreConfigurationFiles": [ "" ],

View File

@@ -304,9 +304,9 @@ public class Startup : AppStartup
public void Use(IApplicationBuilder applicationBuilder, IWebHostEnvironment env) public void Use(IApplicationBuilder applicationBuilder, IWebHostEnvironment env)
{ {
var app = (WebApplication)applicationBuilder; var app = (WebApplication)applicationBuilder;
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All, KnownNetworks = { }, KnownProxies = { } });
app.UseBootstrapBlazor(); app.UseBootstrapBlazor();
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All });
// 启用本地化 // 启用本地化
var option = app.Services.GetService<IOptions<RequestLocalizationOptions>>(); var option = app.Services.GetService<IOptions<RequestLocalizationOptions>>();

View File

@@ -1,6 +1,6 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<Version>10.4.22</Version> <Version>10.5.1</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>