2014-10-30 99 views
0

我有一個使用ASP.NET MVC(或OWIN)託管的SignalR中心(聊天應用程序)。SignalR用戶登錄

我需要一個常見的cookie認證。 (無論是在集線器本身登錄,還是通過託管的MVC/OWIN應用程序首先登錄)。

任務聽起來很瑣碎,但是,我無法管理。

網絡上有很多關於基於已經登錄的用戶(包含在請求cookie中)授權訪問的信息。但是很少有關於實際簽署用戶並將信息放入Cookie的信息(特別是在託管應用程序中籤名,而不是在集線器本身中籤名)。

此外,一些文檔like this只是不工作(可能是由於SignalR的最新版本的一些變化)。

例如,FormsAuthentication.SetAuthCookie會拋出異常,並且HubCallerContext中甚至沒有任何Response屬性可用於手動編寫授權Cookie。

我可以假設(甚至理解)一般情況下,將某些內容寫入響應可能沒有意義,因爲SignalR連接不僅僅是一種常見的「回傳邏輯」,然而,仍然無法找到方式認證(登錄)必須工作。

回答

0

SignalR不提供任何驗證方法。而是使用Owin中間件提供的身份驗證。

如果您使用的是ASP.NET,則只需使用SignInManager即可登錄用戶,方法與使用普通ASP應用程序相同。然後建立一個SignalR連接。 SignalR會尊重這一點,並且在您的集線器環境中,您將訪問登錄的用戶,並且您將能夠使用授權過濾器。

請記住,登錄必須發生之前SignalR連接即將開始。

而你提供的鏈接是完全正確的,適用於第012版的SignalR