mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 11:00:32 +00:00
fix: Added HashSet for disconnecting connections (#2981)
* fix: Added HashSet for disconnecting connections * fixed code smells
This commit is contained in:
parent
f83ed02a83
commit
803e804d87
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Mirror.Authenticators
|
namespace Mirror.Authenticators
|
||||||
@ -7,12 +8,16 @@ namespace Mirror.Authenticators
|
|||||||
[AddComponentMenu("Network/Authenticators/BasicAuthenticator")]
|
[AddComponentMenu("Network/Authenticators/BasicAuthenticator")]
|
||||||
public class BasicAuthenticator : NetworkAuthenticator
|
public class BasicAuthenticator : NetworkAuthenticator
|
||||||
{
|
{
|
||||||
[Header("Custom Properties")]
|
[Header("Server Credentials")]
|
||||||
|
public string serverUsername;
|
||||||
|
public string serverPassword;
|
||||||
|
|
||||||
// set these in the inspector
|
[Header("Client Credentials")]
|
||||||
public string username;
|
public string username;
|
||||||
public string password;
|
public string password;
|
||||||
|
|
||||||
|
readonly HashSet<NetworkConnection> connectionsPendingDisconnect = new HashSet<NetworkConnection>();
|
||||||
|
|
||||||
#region Messages
|
#region Messages
|
||||||
|
|
||||||
public struct AuthRequestMessage : NetworkMessage
|
public struct AuthRequestMessage : NetworkMessage
|
||||||
@ -71,8 +76,10 @@ public void OnAuthRequestMessage(NetworkConnection conn, AuthRequestMessage msg)
|
|||||||
{
|
{
|
||||||
// Debug.LogFormat(LogType.Log, "Authentication Request: {0} {1}", msg.authUsername, msg.authPassword);
|
// Debug.LogFormat(LogType.Log, "Authentication Request: {0} {1}", msg.authUsername, msg.authPassword);
|
||||||
|
|
||||||
|
if (connectionsPendingDisconnect.Contains(conn)) return;
|
||||||
|
|
||||||
// check the credentials by calling your web server, database table, playfab api, or any method appropriate.
|
// check the credentials by calling your web server, database table, playfab api, or any method appropriate.
|
||||||
if (msg.authUsername == username && msg.authPassword == password)
|
if (msg.authUsername == serverUsername && msg.authPassword == serverPassword)
|
||||||
{
|
{
|
||||||
// create and send msg to client so it knows to proceed
|
// create and send msg to client so it knows to proceed
|
||||||
AuthResponseMessage authResponseMessage = new AuthResponseMessage
|
AuthResponseMessage authResponseMessage = new AuthResponseMessage
|
||||||
@ -88,6 +95,8 @@ public void OnAuthRequestMessage(NetworkConnection conn, AuthRequestMessage msg)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
connectionsPendingDisconnect.Add(conn);
|
||||||
|
|
||||||
// create and send msg to client so it knows to disconnect
|
// create and send msg to client so it knows to disconnect
|
||||||
AuthResponseMessage authResponseMessage = new AuthResponseMessage
|
AuthResponseMessage authResponseMessage = new AuthResponseMessage
|
||||||
{
|
{
|
||||||
@ -111,6 +120,11 @@ IEnumerator DelayedDisconnect(NetworkConnection conn, float waitTime)
|
|||||||
|
|
||||||
// Reject the unsuccessful authentication
|
// Reject the unsuccessful authentication
|
||||||
ServerReject(conn);
|
ServerReject(conn);
|
||||||
|
|
||||||
|
yield return null;
|
||||||
|
|
||||||
|
// remove conn from pending connections
|
||||||
|
connectionsPendingDisconnect.Remove(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
Loading…
Reference in New Issue
Block a user