ошибка при подключении игрока к игре

При подключении игрока к игре появляется ошибка Closing connection: connection(0). Received message Mirror.RpcMessage that required authentication, but the user has not authenticated yet.

скрипт аунтефикации

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

namespace Mirror.Authenticators
{
    [AddComponentMenu("Network/ Authenticators/Basic Authenticator")]
    [HelpURL("https://mirror-networking.gitbook.io/docs/components/network-authenticators/basic-authenticator")]
    public class BasicAuthenticator : NetworkAuthenticator
    {
        public string username;
        public string password;

        readonly HashSet<NetworkConnection> connectionsPendingDisconnect = new HashSet<NetworkConnection>();

        public delegate void OnSpawnPlayer(NetworkConnectionToClient conn, PlayerData playerData);
        public event OnSpawnPlayer SpawnPlayer;

        #region Messages

        public struct AuthRequestMessage : NetworkMessage
        {
            public string authUsername;
            public string authPassword;
        }

        public struct PlayerData : NetworkMessage
        {
            public AuthRequestMessage AuthData;

            public string Name;
            public string Prime;
            public string Cups;
        }


        public struct AuthResponseMessage : NetworkMessage
        {
            public byte code;
            public string message;
        }


        #endregion

        #region Server

        public override void OnStartServer()
        {

            NetworkServer.RegisterHandler<PlayerData>(OnAuthRequestMessage, false);
        }

        public override void OnStopServer()
        {
            NetworkServer.UnregisterHandler<PlayerData>();
        }



        public void OnAuthRequestMessage(NetworkConnectionToClient conn, PlayerData msg)
        {
            if (!connectionsPendingDisconnect.Contains(conn)) 
                StartCoroutine(OnAuthRequestMessageIE(conn, msg));
        }

        private IEnumerator OnAuthRequestMessageIE(NetworkConnectionToClient conn, PlayerData msg)
        {
            WWWForm form = new WWWForm();
            form.AddField("login", msg.AuthData.authUsername);
            form.AddField("password", msg.AuthData.authPassword);

            UnityWebRequest www = UnityWebRequest.Post("http://epicgametest.net/authorization.php", form);
            yield return www.SendWebRequest();



            if (www.result == UnityWebRequest.Result.ConnectionError)
                Debug.Log(www.error);



            if (www.downloadHandler.text == "0")
            {
                AuthResponseMessage authResponseMessage = new AuthResponseMessage
                {
                    code = 100,
                    message = "Success"
                };

                conn.Send(authResponseMessage);

                ServerAccept(conn);
                SpawnPlayer?.Invoke(conn, msg);

            }
            else
            {
                connectionsPendingDisconnect.Add(conn);
                AuthResponseMessage authResponseMessage = new AuthResponseMessage
                {
                    code = 200,
                    message = "Invalid Credentials"
                };

                conn.Send(authResponseMessage);

                conn.isAuthenticated = false;

                StartCoroutine(DelayedDisconnect(conn, 1f));
            }
            
            www.Dispose();
        }


        IEnumerator DelayedDisconnect(NetworkConnectionToClient conn, float waitTime)
        {
            yield return new WaitForSeconds(waitTime);

            ServerReject(conn);

            yield return null;

            connectionsPendingDisconnect.Remove(conn);

            Debug.Log("reget0");
        }

        #endregion

        #region Client

        public override void OnStartClient()
        {
            NetworkClient.RegisterHandler<AuthResponseMessage>(OnAuthResponseMessage, false);
        }

        public override void OnStopClient()
        {
            NetworkClient.UnregisterHandler<AuthResponseMessage>();
        }

        public override void OnClientAuthenticate()
        {
            Debug.Log(123);
            AuthRequestMessage authRequestMessage = new AuthRequestMessage
            {
                authUsername = username,
                authPassword = password
            };

            PlayerData playerData = new PlayerData
            {
                AuthData = authRequestMessage,
                Name = null
            };


            NetworkClient.connection.Send(playerData);
        }

        public void OnAuthResponseMessage(AuthResponseMessage msg)
        {
            if (msg.code == 100)
            {
                ClientAccept();
            }
            else
            {
                Debug.LogError($"Authentication Response: {msg.message}");

                ClientReject();
            }
        }

        #endregion
    }
}

Ответы (0 шт):