Я хочу добавить функцию чата в реальном времени в мой веб-проект.Я использую 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'))
}