将 Context.UserIdentifier 设置为不同的声明
Set Context.UserIdentifier to different claim
默认情况下,signalr
在 jwt 令牌中从 ClaimTypes.NameIdentifier
设置 Context.UserIdentifier
。
但是我想将它设置为与令牌不同的声明,令牌是 userId 而不是用户名,因为当我向特定用户发送消息时我有他的 ID 可用。
有办法吗?
实施IUserIdProvider
并注册。
public class CustomUserIdProvider : IUserIdProvider
{
public virtual string GetUserId(HubConnectionContext connection)
{
return connection.User?.FindFirst(yourClaimTypeHere)?.Value;
}
}
services.AddSingleton<IUserIdProvider, CustomUserIdProvider>();
默认情况下,signalr
在 jwt 令牌中从 ClaimTypes.NameIdentifier
设置 Context.UserIdentifier
。
但是我想将它设置为与令牌不同的声明,令牌是 userId 而不是用户名,因为当我向特定用户发送消息时我有他的 ID 可用。
有办法吗?
实施IUserIdProvider
并注册。
public class CustomUserIdProvider : IUserIdProvider
{
public virtual string GetUserId(HubConnectionContext connection)
{
return connection.User?.FindFirst(yourClaimTypeHere)?.Value;
}
}
services.AddSingleton<IUserIdProvider, CustomUserIdProvider>();