我正在尝试在 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/