SignalR 通知微服务 - 如何获取用户信息

问题描述 投票:0回答:0

我在 docker 容器中构建了一个小微服务,它基本上只是一个 API 可以连接到的集线器,以将通知推送到 blazor 客户端。因为它是一个微服务,它在自己的进程中运行,并且不知道 UI 和 API 中的身份验证(身份验证使用 JWT 令牌)。这是我的 OnConnectedAsync 方法:

private readonly static ConcurrentDictionary<string, string> _connectionMap = new();

public override Task OnConnectedAsync()
{
    var connectionId = Context.ConnectionId;
    var userName = Context.User?.Identity?.Name;

    _connectionMap.TryAdd(connectionId, userName);

    return base.OnConnectedAsync();
}

不出所料,Context.User 中的所有内容大部分都是空的,因为它自己运行并且不知道其他项目中正在进行的所有身份验证。我没有看到可以用来以某种方式将用户 ID 传递到我的集线器的覆盖。我需要能够将 connectionID 与用户名相关联,以便只有该用户可以接收通知,现在每个客户端都会收到每个通知。

如何将某种用户标识传递给我的 SignalR 微服务?

c# authentication signalr microservices
© www.soinside.com 2019 - 2024. All rights reserved.