2017-09-03 110 views
0

我知道SignalR不適用於ASP.NET Core 1.1和2.0的預覽版。同時我需要解決這個限制。ASP.NET Core接收SignalR更新

我正在構建的應用程序是一個ASP.NET Core 1.1 MVC應用程序。這個應用程序中的一個小而重要的功能是案例管理。該視圖需要用該特定用戶的新傳入案例進行更新。

我的SignalR 2集線器運行在獨立的ASP.NET 4. *應用程序中。

我一直希望能夠輕鬆使用SignalR JavaScript客戶端代替.NET客戶端,而Bob是您的叔叔。 然而,問題是我使用Azure AD B2C(oauth2)的AuthN/AuthZ

在MVC應用程序中,我使用標準Cookie授權,但我用於後端API的模式是我使用我的MVC代碼將訪問令牌封裝在承載令牌中,並將其發送到使用jwt承載授權的後端API。因此,我的客戶端JavaScript永遠不會看到訪問令牌,只是MVC應用程序在View和Controller之間使用的Cookie。

現在的問題是,如果我想使用JavaScript連接到集線器,我沒有任何要發送到集線器來證明我的身份,因爲jwt令牌只存在於MVC主機中,並且cookie是HTTP只能如此無法訪問。

任何想法或替代?

謝謝!

+0

在您的後端服務中,您爲什麼使用身份驗證。改爲使用http或https與防火牆ip。 – Softlion

回答

0

好的,我發現它!我可以用下面的方法沿着該cookie從我的MVC應用程序經過:

  1. 按照指令https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/compatibility/cookie-sharing通過對hubConnection start方法來設置cookie的共享
  2. 使用withCredentials =真上XMLHttpRequest.withCredentials在信號R

    conn.start({withCredentials:true})。done(function(){ hub.invoke('recordHit'); });

  3. 在Hub項目中設置CORS。

簡單!像魅力一樣工作