如何在 ng2-signalr 中设置授权标头?

Posted

技术标签:

【中文标题】如何在 ng2-signalr 中设置授权标头?【英文标题】:How to set Authorization Header in ng2-signalr? 【发布时间】:2017-10-31 21:24:49 【问题描述】:

我在 ionic 2 中使用库 ng2-signalr。问题是我不知道如何设置授权标头。我已经搜索但没有找到任何示例。

我的连接服务器集线器的代码。

   let options: IConnectionOptions =  qs:userId:1, url: "http://192.168.0.211:44337";

        console.log("Stage 1");
            //Header for 'this.singalR.connect'
        this.signalR.connect(options)
            .then((connection) =>                       

                console.log("Client Id: " + connection.id);                     
             , (err) => 
                console.log("SignalR Error: " + JSON.stringify(err));
            );

如何设置下面的标题?

  var headers = new Headers(
            'Content-Type': "application/json",
            "Authorization": 'Bearer ' + accessToken  //accessToken contain bearer value.
        );

图书馆:ng2-signalr

更新 1

在链接Query String Solution 上。一种解决方法是在qs 中传递authorization token 并进行相应处理。但我想在标题中设置,所以这个解决方案不适合我。另一个原因是我有另一个客户端(简单的 angularjs 信号器),当我像下面这样设置标题时它工作正常。

 $.signalR.ajaxDefaults.headers =  Authorization: //here set header;  

注意:在实现授权之前,相同的代码工作正常,因为我不需要设置授权标头。

【问题讨论】:

你试过在qs中设置token吗? @suraj 还没有 .oky 我正在尝试,但是在查询字符串 qs 中设置标头值没有意义。 ***.com/questions/21196266/… @suraj 给定的链接可以在查询字符串中传递令牌并相应地在服务器端进行处理。现在它不适合我,因为我需要更改我的服务器端代码。如果我改变我的服务器端,那么我必须再改变一个客户端(简单的 angularjs Signalr),它工作得非常好。 【参考方案1】:

目前 (v2.0.4) 未在 ng2-signalr 中实现。 作为一种解决方法,您可以尝试:

declare var $: any;
$.signalR.ajaxDefaults.headers = new Headers(
        'Content-Type': "application/json",
        "Authorization": 'Bearer ' + accessToken  //accessToken contain bearer value.
); 

【讨论】:

以上是关于如何在 ng2-signalr 中设置授权标头?的主要内容,如果未能解决你的问题,请参考以下文章

在 axios 中设置授权标头

express-jwt 和带有 cookie 的 Angular 9:未在“授权”标头中设置令牌

在 URL 中设置请求标头?

如何使用 nodejs 设置授权标头并表达

如何在 axios 中设置全局标头?

如何在所有请求标头中传递授权令牌 - Spring Boot java