signalr - 通过 http header SignalR 传递 token

标签 signalr signalr-hub signalr.client

我可以看到HubConnection中有一个选项可以通过客户端的url请求传递参数。有没有办法从 JS 或 .NET 客户端通过 http header 传递特定 token ?

最佳答案

没有简单的方法可以使用 JS 或 .NET 客户端为 SignalR 请求设置 HTTP header ,但您可以将参数添加到将作为每个 SignalR 请求的一部分发送的查询字符串:

JS 客户端

$.connection.hub.qs = { "token" : tokenValue };
$.connection.hub.start().done(function() { /* ... */ });

.NET 客户端

var connection = new HubConnection("http://foo/",
                                   new Dictionary<string, string>
                                   {
                                       { "token", tokenValue }
                                   });

在中心内,您可以通过上下文访问社区名称:

Context.QueryString["token"]

您也可以在建立持久连接时添加到查询字符串。

编辑:现在可以在 .NET SignalR 客户端上设置 header ,正如一些评论者指出的那样。

在 .NET 客户端上设置 header

var connection = new HubConnection("http://foo/");
connection.Headers.Add("token", tokenValue);

关于signalr - 通过 http header SignalR 传递 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15528221/

相关文章:

asp.net - SignalR 使用组进行寻呼

c# - 连接到集线器的 SignalR 2.2.0 WebSocket 错误

c# - 如何使服务器仅在 SignalR 中运行

asp.net-core - Blazor 服务器和 SignalR 以及 Azure AD

c# - 将 signalr 与 web api 集成以向客户端推送通知

signalr - 为什么 HTTPContext.Current.Session 在 ASP .Net MVC 应用程序中使用 SignalR 2.x 库为空?

c# - Azure Web 应用程序与 Azure VM 上的 Windows 窗体应用程序之间的通信

c# - 获取信号器中的所有组名

SignalR 从客户端方法返回值

SignalR:如何从服务器调用.Net客户端方法?