Как получить Претензии от Пользователя в сигнальном хабе web api .net core - PullRequest
1 голос
/ 29 апреля 2019

Я хочу добавить функцию чата в реальном времени в мой веб-проект.Я использую asp.net SignalR 2.4 для реализации этой функции.Но я изо всех сил пытаюсь получить UserId из токена носителя в классе хаба.

Я предоставляю токен со стороны клиента, используя угловой 7, и я могу получить этот токен через строку запроса в классе хаба.

Я могу легкополучите UserId в одном из моих контроллеров, используя:

var userId = User.Claims.First(c => c.Type == "UserID").Value;

Но в классе хаба User всегда равен null Код из моего класса хаба:

public override Task OnConnectedAsync()
{
    var identity = (ClaimsIdentity)Context.User.Identity;
    var connectionId = Context.ConnectionId;
    var query = Context.GetHttpContext().Request.Query;
    var token = query["access_token"].ToString();
    return base.OnConnectedAsync();
}

Код со стороны клиента, используя угловой 7:

ngOnInit(): void {
    this.hubConnection = new signalR.HubConnectionBuilder()
      .withUrl('http://localhost:50792/chat',{
        accessTokenFactory: () => {
          return this.token;
        },
      } as signalR.IHttpConnectionOptions)
      .build();
    // this.hubConnection.Headers.Add("Authorization", "Bearer " +
this.token);
    this.hubConnection
      .start()
      .then(() => console.log('Connection started'))
}
...