c# - 如何将自定义 header 添加到 SignalR 的 Typescript 客户端?

标签 c# angular typescript signalr

我正在尝试在 header 中传递不记名 token 以授权客户端连接。 SignalR 集线器通过从 header 中获取不记名 token 来授权客户端。我无法修改 SingalR 集线器代码以使用查询字符串来获取 token ,也无法使用内置的 JWT token 功能。

如何向 SignalR typescript 客户端添加自定义 header ?

我唯一能想到的就是覆盖 HttpClient 以添加 header ,但是我不确定这是否可能或如何执行此操作。

我在 Angular 8 中使用 @microsoft/signalr 和最新的 @microsoft/signalr 包。

最佳答案

您可以在构建连接时在选项中添加自定义 HttpClient。

它看起来像这样:

class CustomHttpClient extends HttpClient {
  public send(request: HttpRequest): Promise<HttpResponse> {
    request.headers = { ...request.headers, "customHeader": "value" };
    // ... http call
  }
}

let hubConnection = new HubConnectionBuilder()
    .withUrl(url, { httpClient: new CustomHttpClient() })
    .build();

可以从 DefaultHttpClient 继承,并在发送中调用 DefaultHttpClient 的发送,因此您无需自己实现 Http 调用。

https://github.com/dotnet/aspnetcore/issues/14588 正在跟踪一流的支持。

关于c# - 如何将自定义 header 添加到 SignalR 的 Typescript 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59652214/

相关文章:

c# - C# 或 .NET 中的程序集到底是什么?

angular - 如何在子组件中默认加载嵌套组件

typescript - Visual Code for Typescript 中的 Yarn 工作区

typescript - 是否可以键入检查规范化参数?

Angular Material 5 深色主题未应用于 body

angular - 如何加载 config.json 并在另一个模块中使用配置值?

c# List<T> 排序 : by Chinese strokes

c# - 使用 powershell 反射执行数据库更新

c# - 处理方法内部过滤与外部过滤

javascript - Angular2-Leafletjs : Defining style for L. geoJSON().addTo(myMap)