SignalR 中的客户端 IP 列表和阻止

Client IP Listing and Blocking in SignalR

在Asp.net(核心).net 5 中,在 SignalR 端,我们如何列出(接收)客户端 IP 并通过 IP 阻止或允许某些 IP 的连接和请求?

在我的研究中,我看到只提到了 Azure SingalR。

我们如何通过在应用程序中编码来告诉 SignalR Hub 请求客户端 IP 并接受(白名单)或阻止(黑名单)public 来自特定 IP 的连接请求?

可能吗?

在 SignalR 中,您可以使用 HttpContext 获取用户的 ip。

public class AppHub : Hub
{
    public string Ip => Context.GetHttpContext().Connection.RemoteIpAddress.ToString();

    public override async Task OnConnectedAsync()
    {
        if (Ip == "::1")
        {
            await Clients.All.SendAsync("ReceiveMessage", "Server", "Welcome to the server!");
        }
        else
        {
            throw new Exception("You are not allowed to connect to this server!");
        }

        await base.OnConnectedAsync();
    }
}

另一个解决方案是创建一个集线器过滤器,您可以在此处找到文档: https://docs.microsoft.com/en-us/aspnet/core/signalr/hub-filters?view=aspnetcore-6.0