想为可能正在处理相同问题的其他人分享这个。如果使用的是 Azure 移动应用 cordova 客户端 (https://github.com/Azure/azure-mobile-apps-cordova-client),则会注意到内置的 SignalR 不支持。
我正在使用内置的 SignalR 支持和 WebAPI,它会生成您的 SignalR JavaScript 代理文件供您使用。但是,当您为 API 设置身份验证时,该代理(或一般的 signalR 调用)将不起作用。你可能希望阻止在移动服务客户端运行时仅为 SignalR 构建单独的身份验证设置。
因此,您要做的是以下内容:
登录到移动服务后,重新使用 X-ZUMO-AUTH 和 X-ZUMO-VERSION 标头,如下所示:
var token = mobileServiceClient.currentUser.mobileServiceAuthenticationToken;
var version = mobileServiceClient.version;
var headers = {
"X-ZUMO-AUTH": token,
"X-ZUMO-VERSION": version
};
$.signalR.ajaxDefaults.headers = headers;
现在,在向 WebAPI 终结点发送请求时,signalR 代理将重复使用这些标头。这意味着现在使用移动应用程序客户端为您检索的相同令牌对请求进行身份验证。
注意:我尚未了解令牌过期或刷新时会发生什么。我建议在每次成功提出登录请求后重置标头。