C# 信号器2绑定到声明中的自定义用户ID

C# 信号器2绑定到声明中的自定义用户ID,c#,authentication,signalr,asp.net-mvc-5,claims,C#,Authentication,Signalr,Asp.net Mvc 5,Claims,根据一些帖子,我决定尝试通过自定义用户id对用户进行绑定,IPrincipal.Identity.Name 因此,我实施了: public class CustomUserIdProvider : IUserIdProvider { public string GetUserId(IRequest request) { var identity = (ClaimsPrincipal)Thread.CurrentPrincipal; string i

根据一些帖子,我决定尝试通过自定义用户id对用户进行绑定,
IPrincipal.Identity.Name

因此,我实施了:

public class CustomUserIdProvider : IUserIdProvider
{
    public string GetUserId(IRequest request)
    {
        var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;
        string id = identity.Claims.Where(c => c.Type == UserInfoIdClaimType)
                                   .Select(c => c.Value).Single();
        return id;
    }
}
但当调用此方法时,身份中没有声明

所以我现在无法从那里收回索赔


或者我应该换一种方式?

解决了这个问题,当我在web配置中注册OWIN auth时,似乎我没有正确注册OWIN auth,它成功了

我想我在某个地方读到过,信号集线器有点不属于常规的ASP.Net环境。有些东西不可用(如会话)。我想知道User/Identity是否也是其中之一……我已经调查了该请求,似乎其中包含类似cookies和会话id的内容……您应该使用IRequest.User而不是Thread.CurrentPrincipal