From 9fc8e53fc5925ba59ef63ba247da34cc392ec0d8 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 27 Apr 2019 20:39:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(#IVYHA):=20UserAgent=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E5=BC=95=E5=8F=91=E8=A7=A3=E6=9E=90OS/Browser?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 升级Longbow.Web组件到2.2.11,数据库增加UserAgent字段保存相关UserAgent comment #IVYHA close https://gitee.com/LongbowEnterprise/dashboard/issues?id=IVYHA --- Bootstrap.Admin/Bootstrap.Admin.csproj | 2 +- Bootstrap.Admin/BootstrapAdmin.db | Bin 94208 -> 94208 bytes .../Controllers/AccountController.cs | 7 ++++--- .../Controllers/Api/LogsController.cs | 7 ++++--- .../Bootstrap.Client.DataAccess.csproj | 2 +- Bootstrap.Client/Bootstrap.Client.csproj | 2 +- .../Bootstrap.DataAccess.csproj | 2 +- Bootstrap.DataAccess/Helper/TraceHelper.cs | 3 ++- Bootstrap.DataAccess/Log.cs | 4 ++-- Bootstrap.DataAccess/LoginUser.cs | 5 +++++ Bootstrap.DataAccess/Trace.cs | 5 +++++ DatabaseScripts/Install.sql | 3 +++ DatabaseScripts/MySQL/install.sql | 9 ++++++--- DatabaseScripts/Postgresql/install.sql | 9 ++++++--- DatabaseScripts/SQLite/Install.sql | 9 ++++++--- UnitTest/DB/UnitTest.db | Bin 94208 -> 94208 bytes 16 files changed, 47 insertions(+), 22 deletions(-) diff --git a/Bootstrap.Admin/Bootstrap.Admin.csproj b/Bootstrap.Admin/Bootstrap.Admin.csproj index 9d25b0b8..9888019a 100644 --- a/Bootstrap.Admin/Bootstrap.Admin.csproj +++ b/Bootstrap.Admin/Bootstrap.Admin.csproj @@ -13,7 +13,7 @@ - + diff --git a/Bootstrap.Admin/BootstrapAdmin.db b/Bootstrap.Admin/BootstrapAdmin.db index a39607133eee05745d4d84c4b16770e891d86b50..852930a0dd57f367fd1073b96587209ae5f79847 100644 GIT binary patch delta 520 zcmZp8z}oPDb%L~@AOiz~I21Di>Bkdwj2Q(R6SgKWE|iyNmSx~(JjKAD#=DNoh~qo^ zQoa(NQtquRLTojRrx;Id78F>;$kh~}z%DK-%Gk=h-CmVZk5N@eA+$KP$T2-NuS6lt zG054&F-Sqf$iTorQTq8nsxD>!T{StFi z;Q~JS=^>dwzF(*>NZzvmF5^^`Ukw`wzby8r-q-G+_; delta 449 zcmZp8z}oPDb%L}Y9|Hq}I21Di>FX19j2ZbF6SgKWE|iz&p1{D(e1m~MjdvZF5yyA- zrEGb8C9I~*H+V|9w{maYEGV#tiHj$m;g7hrHDfd9bUS56nd#2TjQX5Foy$Rjjni$F z8D&9Y-VTW+sp&L{8X z8357%24Rjt&K{0I3L1u{nn3&gLlpc%eSAP}QBZIy$}b0+24cdMnHp$9B>jUy;*%fp ziL*IpmQ+HR(~Z;^71@9;G!tdtZmG&>%E;AZBFHW-FVEOwKD|wiQEze+tNiqHdW=S_ zKo@1^O=jehX7((Io&G?TQJj^FGul6R@&*=hcBs`LHVepj5My#8m)K+nCU!=y?Mu`d WIaxRyLtGU?9G!f&Z`Ee>b^!pAHE|XI diff --git a/Bootstrap.Admin/Controllers/AccountController.cs b/Bootstrap.Admin/Controllers/AccountController.cs index f267a050..bea7827a 100644 --- a/Bootstrap.Admin/Controllers/AccountController.cs +++ b/Bootstrap.Admin/Controllers/AccountController.cs @@ -69,11 +69,12 @@ namespace Bootstrap.Admin.Controllers /// internal static void CreateLoginUser(IOnlineUsers onlineUserSvr, IIPLocatorProvider ipLocator, HttpContext context, LoginUser loginUser) { - var agent = new UserAgent(context.Request.Headers["User-Agent"]); + loginUser.UserAgent = context.Request.Headers["User-Agent"]; + var agent = new UserAgent(loginUser.UserAgent); loginUser.Ip = (context.Connection.RemoteIpAddress ?? IPAddress.IPv6Loopback).ToString(); loginUser.City = ipLocator.Locate(loginUser.Ip); - loginUser.Browser = $"{agent.Browser.Name} {agent.Browser.Version}"; - loginUser.OS = $"{agent.OS.Name} {agent.OS.Version}"; + loginUser.Browser = $"{agent.Browser?.Name} {agent.Browser?.Version}"; + loginUser.OS = $"{agent.OS?.Name} {agent.OS?.Version}"; } /// diff --git a/Bootstrap.Admin/Controllers/Api/LogsController.cs b/Bootstrap.Admin/Controllers/Api/LogsController.cs index d96b8ab2..dc654858 100644 --- a/Bootstrap.Admin/Controllers/Api/LogsController.cs +++ b/Bootstrap.Admin/Controllers/Api/LogsController.cs @@ -35,10 +35,11 @@ namespace Bootstrap.Admin.Controllers.Api [HttpPost] public bool Post([FromServices]IOnlineUsers onlineUserSvr, [FromServices]IIPLocatorProvider ipLocator, [FromBody]Log value) { - var agent = new UserAgent(Request.Headers["User-Agent"]); + value.UserAgent = Request.Headers["User-Agent"]; + var agent = new UserAgent(value.UserAgent); value.Ip = (HttpContext.Connection.RemoteIpAddress ?? IPAddress.IPv6Loopback).ToString(); - value.Browser = $"{agent.Browser.Name} {agent.Browser.Version}"; - value.OS = $"{agent.OS.Name} {agent.OS.Version}"; + value.Browser = $"{agent.Browser?.Name} {agent.Browser?.Version}"; + value.OS = $"{agent.OS?.Name} {agent.OS?.Version}"; value.City = ipLocator.Locate(value.Ip); value.UserName = User.Identity.Name; return LogHelper.Save(value); diff --git a/Bootstrap.Client.DataAccess/Bootstrap.Client.DataAccess.csproj b/Bootstrap.Client.DataAccess/Bootstrap.Client.DataAccess.csproj index 5c17bcaa..e080791c 100644 --- a/Bootstrap.Client.DataAccess/Bootstrap.Client.DataAccess.csproj +++ b/Bootstrap.Client.DataAccess/Bootstrap.Client.DataAccess.csproj @@ -14,7 +14,7 @@ - + diff --git a/Bootstrap.Client/Bootstrap.Client.csproj b/Bootstrap.Client/Bootstrap.Client.csproj index 3eead6d4..fab9b24d 100644 --- a/Bootstrap.Client/Bootstrap.Client.csproj +++ b/Bootstrap.Client/Bootstrap.Client.csproj @@ -9,7 +9,7 @@ - + diff --git a/Bootstrap.DataAccess/Bootstrap.DataAccess.csproj b/Bootstrap.DataAccess/Bootstrap.DataAccess.csproj index 4f35d374..8c109e2a 100644 --- a/Bootstrap.DataAccess/Bootstrap.DataAccess.csproj +++ b/Bootstrap.DataAccess/Bootstrap.DataAccess.csproj @@ -15,7 +15,7 @@ - + diff --git a/Bootstrap.DataAccess/Helper/TraceHelper.cs b/Bootstrap.DataAccess/Helper/TraceHelper.cs index d85bec1c..1c54eaa4 100644 --- a/Bootstrap.DataAccess/Helper/TraceHelper.cs +++ b/Bootstrap.DataAccess/Helper/TraceHelper.cs @@ -30,7 +30,8 @@ namespace Bootstrap.DataAccess City = v.Location, Browser = v.Browser, OS = v.OS, - UserName = v.UserName + UserName = v.UserName, + UserAgent = v.UserAgent }); } } diff --git a/Bootstrap.DataAccess/Log.cs b/Bootstrap.DataAccess/Log.cs index 3490f127..0aa20fc3 100644 --- a/Bootstrap.DataAccess/Log.cs +++ b/Bootstrap.DataAccess/Log.cs @@ -13,8 +13,8 @@ namespace Bootstrap.DataAccess /// public string CRUD { get; set; } - /// - /// 获得/设置 请求数据 + /// + /// 获得/设置 请求数据 /// public string RequestData { get; set; } diff --git a/Bootstrap.DataAccess/LoginUser.cs b/Bootstrap.DataAccess/LoginUser.cs index ef1cd124..ae2f4b65 100644 --- a/Bootstrap.DataAccess/LoginUser.cs +++ b/Bootstrap.DataAccess/LoginUser.cs @@ -50,6 +50,11 @@ namespace Bootstrap.DataAccess /// public string Result { get; set; } + /// + /// + /// + public string UserAgent { get; set; } + /// /// /// diff --git a/Bootstrap.DataAccess/Trace.cs b/Bootstrap.DataAccess/Trace.cs index 003197bc..7bd2190a 100644 --- a/Bootstrap.DataAccess/Trace.cs +++ b/Bootstrap.DataAccess/Trace.cs @@ -49,6 +49,11 @@ namespace Bootstrap.DataAccess /// public string RequestUrl { get; set; } + /// + /// + /// + public string UserAgent { get; set; } + /// /// 保存访问历史记录 /// diff --git a/DatabaseScripts/Install.sql b/DatabaseScripts/Install.sql index 7f224b37..b8399279 100644 --- a/DatabaseScripts/Install.sql +++ b/DatabaseScripts/Install.sql @@ -273,6 +273,7 @@ CREATE TABLE [dbo].[Logs]( [City] [nvarchar](50) NULL, [RequestUrl] [nvarchar](500) NOT NULL, [RequestData] [nvarchar](500) NULL, + [UserAgent] [varchar](2000) NULL, CONSTRAINT [PK_Logs] PRIMARY KEY CLUSTERED ( [ID] ASC @@ -499,6 +500,7 @@ CREATE TABLE [dbo].[LoginLogs]( [Browser] [varchar](50) NULL, [City] [nvarchar](50) NULL, [Result] [nvarchar](50) NOT NULL, + [UserAgent] [varchar](2000) NULL, CONSTRAINT [PK_LoginLogs] PRIMARY KEY CLUSTERED ( [ID] ASC @@ -556,6 +558,7 @@ CREATE TABLE [dbo].[Traces]( [OS] [varchar](50) NULL, [City] [nvarchar](50) NULL, [RequestUrl] [nvarchar](500) NOT NULL, + [UserAgent] [varchar](2000) NULL, CONSTRAINT [PK_Traces] PRIMARY KEY CLUSTERED ( [ID] ASC diff --git a/DatabaseScripts/MySQL/install.sql b/DatabaseScripts/MySQL/install.sql index 9e94fa4f..1ba142f8 100644 --- a/DatabaseScripts/MySQL/install.sql +++ b/DatabaseScripts/MySQL/install.sql @@ -87,7 +87,8 @@ CREATE TABLE Logs( OS VARCHAR (50) NULL, City VARCHAR (50) NULL, RequestUrl VARCHAR (500) NOT NULL, - RequestData VARCHAR (500) NULL + RequestData VARCHAR (500) NULL, + UserAgent VARCHAR (2000) NULL ); CREATE TABLE `Groups`( @@ -158,7 +159,8 @@ CREATE TABLE LoginLogs( OS VARCHAR (50) NULL, Browser VARCHAR (50) NULL, City VARCHAR (50) NULL, - Result VARCHAR (50) NOT NULL + Result VARCHAR (50) NOT NULL, + UserAgent VARCHAR (2000) NULL ); CREATE TABLE ResetUsers( @@ -177,5 +179,6 @@ CREATE TABLE Traces( Browser VARCHAR (50), OS VARCHAR (50), City VARCHAR (50), - RequestUrl VARCHAR (500) NOT NULL + RequestUrl VARCHAR (500) NOT NULL, + UserAgent VARCHAR (2000) NULL ); \ No newline at end of file diff --git a/DatabaseScripts/Postgresql/install.sql b/DatabaseScripts/Postgresql/install.sql index 00935942..0a877dad 100644 --- a/DatabaseScripts/Postgresql/install.sql +++ b/DatabaseScripts/Postgresql/install.sql @@ -87,7 +87,8 @@ CREATE TABLE Logs( OS VARCHAR (50) NULL, City VARCHAR (50) NULL, RequestUrl VARCHAR (500) NOT NULL, - RequestData VARCHAR (500) NULL + RequestData VARCHAR (500) NULL, + UserAgent VARCHAR (2000) NULL ); CREATE TABLE Groups( @@ -158,7 +159,8 @@ CREATE TABLE RejectUsers( OS VARCHAR (50) NULL, Browser VARCHAR (50) NULL, City VARCHAR (50) NULL, - Result VARCHAR (50) NOT NULL + Result VARCHAR (50) NOT NULL, + UserAgent VARCHAR (2000) NULL ); CREATE TABLE ResetUsers( @@ -177,5 +179,6 @@ CREATE TABLE Traces( Browser VARCHAR (50), OS VARCHAR (50), City VARCHAR (50), - RequestUrl VARCHAR (500) NOT NULL + RequestUrl VARCHAR (500) NOT NULL, + UserAgent VARCHAR (2000) NULL ); \ No newline at end of file diff --git a/DatabaseScripts/SQLite/Install.sql b/DatabaseScripts/SQLite/Install.sql index b47893c8..cc11e308 100644 --- a/DatabaseScripts/SQLite/Install.sql +++ b/DatabaseScripts/SQLite/Install.sql @@ -87,7 +87,8 @@ CREATE TABLE Logs( OS VARCHAR (50) NULL, City VARCHAR (50) NULL, RequestUrl VARCHAR (500) NOT NULL, - RequestData VARCHAR (500) NULL + RequestData VARCHAR (500) NULL, + UserAgent VARCHAR (2000) NULL ); CREATE TABLE Groups( @@ -158,7 +159,8 @@ CREATE TABLE LoginLogs( OS VARCHAR (50) NULL, Browser VARCHAR (50) NULL, City VARCHAR (50) NULL, - Result VARCHAR (50) NOT NULL + Result VARCHAR (50) NOT NULL, + UserAgent VARCHAR (2000) NULL ); CREATE TABLE ResetUsers( @@ -177,5 +179,6 @@ CREATE TABLE Traces( Browser VARCHAR (50), OS VARCHAR (50), City VARCHAR (50), - RequestUrl VARCHAR (500) NOT NULL + RequestUrl VARCHAR (500) NOT NULL, + UserAgent VARCHAR (2000) ); \ No newline at end of file diff --git a/UnitTest/DB/UnitTest.db b/UnitTest/DB/UnitTest.db index 349fb9ed247bccfedc60c2ab00d46fbe1ecdd537..b259bfe5b32f9a0495506d2363fb0c1212af18a4 100644 GIT binary patch delta 515 zcmZp8z}oPDb%L~@E&~IDI21Di>H8CPj2U$s6SgKWE|iyNmSx~(JjKAD#=DLup38{i zJNr_;67KmdLTojRrx;Id78F>;$kh}e$1W}^%Gk=h-CmVZk5N@eA+$KP$T2-NuS6lt zG054&F-Sqf$iTorQ0|qMtLz9{eySThO$dU>*M!o5As*F;YmT)NmJ)M~c z^7eE_bw=UocU2jsC4k<8hoh;1rj7#C|I-E37*$w`OLIzqt`wKV8SLAas55?M=3tYC MIA!~MZN@|w08!0_K>z>% delta 466 zcmZp8z}oPDb%L~@76Su=I21Di>B|#!j2X2W6SgKWE|iz!p1{D(yo-T9jdvYSJeLv2 zclM=hd3+_Trp&vz=W}mvZ1}>&2~@LO+}fJ4ak{NCqwI8NWkzp@#FEtX{Gv*Q5Z8zh z9WDh0zr@^BILA3Z1;KGiP0P$nRq*r+;nHlX5MvjYlw@r6o-U)psLl@5sG#8KGI<`a z21jUdY7xkk$pUC)6eNK8nFUhl$ke~ zkxQD{vmkc*164+GRxZwH|KQ0RSj5?(R)g3qAmc%d$%$NIlO34Y8M(GEQD^+j%)!`H QUXqxUle&GrHe;d-0IB136951J