Как получить список авторизованных пользователей в .NET Core - PullRequest
0 голосов
/ 29 мая 2019

Кто-нибудь знает, есть ли у Net Core какой-либо способ получить список зарегистрированных пользователей через ASP.NET Identity?

Я знаю, что мы можем переопределить наш ApplicationUser и добавить какое-то поле DateTime, например «LastAction» или «LastLogin ', но я ожидал, что это будет решено в настоящее время без таких обходных путей.

1 Ответ

0 голосов
/ 29 мая 2019

Вы можете использовать SignalR для этого случая, когда при входе пользователя в систему вы можете записать логику подключения пользователя к списку, а при выходе из системы вы можете удалить идентификатор из списка

Я будуопределить список подключений для хранения списка идентификаторов подключений

public static class ConnectionList
{
    private static readonly HashSet<string> connectedIds = new HashSet<string>();

    public static HashSet<string> ConnectedIds
    {
        get => connectedIds;
        set => ConnectedIds = value;
    }
}

, затем в своем классе концентратора я определю метод для обработки подключения и отключения клиента

    public Task GetTotalAccountConnect()
    {
        return Clients.All.InvokeAsync("TotalClientConnect", ConnectionList.ConnectedIds.Count);
    }

    public override Task OnConnectedAsync()
    {
        ConnectionList.ConnectedIds.Add(Context.ConnectionId);
        return base.OnConnectedAsync();
    }

    public override Task OnDisconnectedAsync(Exception exception)
    {
        ConnectionList.ConnectedIds.Remove(Context.ConnectionId);
        return base.OnDisconnectedAsync(exception);
    }

Затем в своем угловом коде Iподключится к хабу

connectOnlineHub(): HubConnection {
    const connection = new signalR.HubConnection(`${this.onlineHubUrl}/onlinehub`);         
    connection.start().then(() => connection.invoke('GetTotalAccountConnect'));
    connection.on('TotalClientConnect', data => {
      this.totalOnline = data;
    });
}

Так что в строке this.totalOnline у ​​меня будет номер подключения пользователя

...