diff --git a/FunGame.Server/FunGame.Server.csproj b/FunGame.Server/FunGame.Server.csproj index 408dba1..c7a81e3 100644 --- a/FunGame.Server/FunGame.Server.csproj +++ b/FunGame.Server/FunGame.Server.csproj @@ -39,6 +39,10 @@ ..\..\FunGame\bin\Server\Debug\net6.0\MySql.Data.dll False + + ..\..\FunGame\bin\Debug\net7.0-windows\Newtonsoft.Json.dll + True + ..\..\FunGame\bin\Server\Debug\net6.0\System.Configuration.ConfigurationManager.dll False diff --git a/FunGame.Server/Model/ServerModel.cs b/FunGame.Server/Model/ServerModel.cs index 109f135..e381b4b 100644 --- a/FunGame.Server/Model/ServerModel.cs +++ b/FunGame.Server/Model/ServerModel.cs @@ -36,7 +36,7 @@ namespace Milimoe.FunGame.Server.Model private string RegVerify = ""; private int FailedTimes = 0; // 超过一定次数断开连接 private string UserName = ""; - private string Password = ""; + private DataSet UserDataSet = new(); private string RoomID = ""; private readonly Guid Token; private readonly ServerSocket Server; @@ -106,11 +106,23 @@ namespace Milimoe.FunGame.Server.Model SQLHelper.ExecuteDataSet(UserQuery.Select_Users_LoginQuery(username, password), out SQLResult result); if (result == SQLResult.Success) { - DataRow UserRow = SQLHelper.DataSet.Tables[0].Rows[0]; + UserDataSet = SQLHelper.DataSet; + DataRow UserRow = UserDataSet.Tables[0].Rows[0]; if (autokey != null && autokey.Trim() != "") - ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] AutoKey: 已确认"); + { + SQLHelper.ExecuteDataSet(UserQuery.Select_CheckAutoKey(username, autokey), out result); + if (result == SQLResult.Success) + { + ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] AutoKey: 已确认"); + } + else + { + msg = "AutoKey不正确,拒绝自动登录!"; + ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + msg); + return Send(socket, type, CheckLoginKey, msg); + } + } UserName = username; - Password = password; CheckLoginKey = Guid.NewGuid(); return Send(socket, type, CheckLoginKey); } @@ -127,7 +139,7 @@ namespace Milimoe.FunGame.Server.Model if (CheckLoginKey.Equals(checkloginkey)) { // 创建User对象 - _User = Factory.New(UserName, Password); + _User = Factory.GetInstance(UserDataSet); // 检查有没有重复登录的情况 KickUser(); // 添加至玩家列表 @@ -136,7 +148,7 @@ namespace Milimoe.FunGame.Server.Model // CheckLogin LoginTime = DateTime.Now.Ticks; SQLHelper.Execute(UserQuery.Update_CheckLogin(UserName, socket.ClientIP.Split(':')[0]), out _); - return Send(socket, type, UserName, Password); + return Send(socket, type, UserDataSet); } ServerHelper.WriteLine("客户端发送了错误的秘钥,不允许本次登录。"); }