public override async Task Process(LoginPacket packet, IPacketContext context) { var identityResult = await UserManager.AddLoginAsync(packet.Username, packet.Password); var errors = (identityResult.Errors != null) ? identityResult.Errors.ToArray() : new string[0]; var replyPacket = new LoginReplyPacket(identityResult.Success, errors); context.Sender.Send(replyPacket); if (replyPacket.Accepted) { var user = await UserManager.UserStorage.FindByNameAsync(packet.Username); var userConnection = TcpConnections.FindByEndpoint(context.Sender.EndPoint); userConnection.UserTag = user; NetPeer.OnClientConnected(user); this.NetPeer.Logger.LogInformation("User '{username}' authenticated ({address}).", packet.Username, context.Sender.EndPoint.ToString()); } else { this.NetPeer.Logger.LogInformation("User '{username}' failed to authenticated ({address}).", packet.Username, context.Sender.EndPoint.ToString()); } }
/// <summary> /// 处理登陆应答 /// <remark>abu 2008-03-08 </remark> /// </summary> /// <param name="packet">The packet.</param> private void ProcessLoginReply(LoginReplyPacket inPacket, LoginPacket outPacket) { QQEventArgs <LoginReplyPacket, LoginPacket> e = new QQEventArgs <LoginReplyPacket, LoginPacket>(client, inPacket, outPacket); switch (inPacket.ReplyCode) { case ReplyCode.OK: // 登陆成功的话我们就设置用户的一些信息,然后触发事件 user.SessionKey = inPacket.SessionKey; user.IP = inPacket.IP; user.ServerIp = inPacket.ServerIP; user.LastLoginIp = inPacket.LastLoginIP; user.Port = inPacket.Port; user.ServerPort = inPacket.ServerPort; user.LoginTime = inPacket.LoginTime; user.LastLoginTime = inPacket.LastLoginTime; user.ClientKey = inPacket.ClientKey; user.AuthToken = inPacket.AuthToken; // 得到文件传输密钥 client.LoginManager.OnLoginSuccessed(e); break; case ReplyCode.LOGIN_FAIL: //登录失败 client.LoginManager.OnLoginFailed(e); break; case ReplyCode.LOGIN_REDIRECT: if (Utils.Util.IsIPZero(inPacket.RedirectIP)) { client.LoginManager.OnLoginRedirectNull(e); } else { client.LoginManager.OnLoginRedirect(e); } break; default: client.LoginManager.OnLoginUnknownError(e); break; } }