Search code examples
c#asp.net-coresignalrsignalr-hub

How to use IUserIdProvider in .NET Core?


This article describes using IUserIdProvider interface. It shows how you can use GlobalHost to make SignalR use you user ID provider. But SignalR for .Net Core does not have GlobalHost. What is the replacement?


Solution

  • You need to implement IUserIdProvider.

    public class MyCustomProvider : IUserIdProvider
    {
        public string GetUserId(HubConnectionContext connection)
        {
            ...
        }
    }
    

    Then you need to register it in Startup for dependency injection:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSignalR();
        services.AddSingleton<IUserIdProvider, MyCustomProvider>();
    }
    

    Then SignalR will use your UserIdProvider in such events like HubEndPoint.OnConnectedAsync()