Checklogin

This commit is contained in:
Mili 2023-02-24 00:40:03 +08:00
parent 9e8d5c3f8e
commit 0bef491b5c

View File

@ -21,6 +21,7 @@ namespace Milimoe.FunGame.Server.Model
* Private * Private
*/ */
private User? User = null; private User? User = null;
private Guid CheckLoginKey = Guid.Empty;
public ServerModel(ClientSocket socket, bool running) public ServerModel(ClientSocket socket, bool running)
{ {
@ -37,6 +38,7 @@ namespace Milimoe.FunGame.Server.Model
{ {
object[] objs = socket.Receive(); object[] objs = socket.Receive();
SocketMessageType type = (SocketMessageType)objs[0]; SocketMessageType type = (SocketMessageType)objs[0];
object[] args = (object[])objs[1];
string msg = ""; string msg = "";
if (type != SocketMessageType.HeartBeat) if (type != SocketMessageType.HeartBeat)
{ {
@ -50,23 +52,37 @@ namespace Milimoe.FunGame.Server.Model
case SocketMessageType.GetNotice: case SocketMessageType.GetNotice:
msg = Config.SERVER_NOTICE; msg = Config.SERVER_NOTICE;
break; break;
case SocketMessageType.Login: case SocketMessageType.Login:
break; CheckLoginKey = Guid.NewGuid();
return Send(socket, type, CheckLoginKey);
case SocketMessageType.CheckLogin: case SocketMessageType.CheckLogin:
if (args != null && args.Length > 0)
{
Guid checkloginkey = NetworkUtility.ConvertJsonObject<Guid>(args[0]);
if (CheckLoginKey.Equals(checkloginkey))
{
// 添加至玩家列表 // 添加至玩家列表
User = (User)Factory.New<User>(msg); User = Factory.New<User>(msg);
msg = "欢迎回来, " + msg + " 。";
AddUser(); AddUser();
GetUserCount(); GetUserCount();
break; return Send(socket, type, msg);
}
ServerHelper.WriteLine("客户端发送了错误的秘钥,不允许本次登录。");
}
return false;
case SocketMessageType.Logout: case SocketMessageType.Logout:
msg = "你已成功退出登录! "; msg = "你已成功退出登录! ";
GetUserCount(); GetUserCount();
break; break;
case SocketMessageType.Disconnect: case SocketMessageType.Disconnect:
msg = "你已成功断开与服务器的连接: " + Config.SERVER_NAME + "。 "; msg = "你已成功断开与服务器的连接: " + Config.SERVER_NAME + "。 ";
GetUserCount(); GetUserCount();
break; break;
case SocketMessageType.HeartBeat: case SocketMessageType.HeartBeat:
msg = ""; msg = "";
break; break;