包括身份验证标头(带有访问令牌)来自Angular的SignalR Hub



在后端,我有一个ASP.NET Core 2.2 Web API。在其中,我有一个SignalR核心集线器。在正面,我们有一个Angular 5应用。我们使用auth0作为我们的身份验证服务器。

前端调用任何API端点时,它将与查询一起发送,其中包含访问令牌的身份验证标头。由于所有API端点都具有[授权]装饰器,因此这是必需的。

前端开发人员现在使用SignalR处理客户端应用程序的聊天系统,但他不知道如何使用对SignalR Hub的调用来执行相同的操作。IE。在Angular中调用SignalR Hub方法时,包括身份验证标头(带有访问令牌(。

我的问题是,可以这样做吗?我知道Signalr在可能的情况下使用Web插座。因此,是否可以将带有Web插座的授权标头包含,就像对API的常规HTTP调用相同的方式吗?如果可能的话,一个样本将不胜感激!

目前,他在Angular中有一个简单的测试代码设置:

this.hubConnection
  .start()
  .then(() => console.log('Connection started!'))
  .catch(err => console.log('Error while establishing connection :('));
this.hubConnection.on('ReceiveMessage', (userId: string, message: string) => {
    const text = `${userId}: ${message}`;
    this.messages.push(text);
  });
this.hubConnection
  .invoke('SendMessage', 'john', 'hello world')
  .catch(err => console.error(err));

}

将传输类型更改为长轮询,访问令牌将在HTTP标头

上添加
// Connect, using the token we got.
this.connection = new signalR.HubConnectionBuilder()
   .withUrl("/hubs/chat", { accessTokenFactory: () => this.loginToken })
.build();

最新更新