将Context.UserIdentifier设置为不同的声明



默认情况下,signalr从jwt令牌中的ClaimTypes.NameIdentifier设置Context.UserIdentifier。但我想将其设置为不同于令牌的声明,令牌是userId,而不是username,因为当我向特定用户发送消息时,我有他的id可用。有办法做到吗?

实现IUserIdProvider并注册它。

public class CustomUserIdProvider : IUserIdProvider
{
public virtual string GetUserId(HubConnectionContext connection)
{
return connection.User?.FindFirst(yourClaimTypeHere)?.Value;
}
}
services.AddSingleton<IUserIdProvider, CustomUserIdProvider>();

相关内容

最新更新