2013-07-02 52 views
6

我有一個自己託管的SignalR實例,使用OWIN。我想實施授權。我的用戶已經使用Forms Authentication登錄到ASP.NET MVC應用程序。在OWIN託管的SignalR實施中接受ASP.NET Forms身份驗證Cookie?

由於這兩個應用程序將在同一個URL上可用,因此這兩個cookie將在兩者之間共享。如何接受自主託管的SignalR應用程序中的表單身份驗證cookie?

說明:我正在談論瀏覽器使用與用於登錄單獨(但相關,並安裝在同一主機上)IIS應用程序相同的憑據訪問自託管的SignalR中心。

所以,問題是:我如何掛鉤到SignalR服務器管道捕獲.ASPXAUTH cookie並使用它在調用集線器之前設置當前主體?

如果有幫助,我可以將一些南希投入混合。

+0

你有沒有找到解決你的問題。我試圖一樣(儘管我的MVC應用程序和我自己託管的SignalR服務在不同的端口上)。 –

回答

0

如果你的用戶已經通過身份驗證和登錄,您可以檢查您SignalR樞紐內的下列:

Context.User.Identity.IsAuthenticated 

確保這一點屬性設置爲true。您可以在您的集線器的構造器中放置此檢查以阻止/刪除它們的連接。如果爲false,則可以將它們重定向到另一個頁面。

+0

身份驗證發生在MVC應用程序中,而不是服務中。 .ASPXAUTH cookie可以同時使用,但是如何將它鉤入SignalR或OWIN管道? –

+1

羅傑,我看到你在找什麼,但實際上從來沒有試圖這樣做。對於連接類,有一個名爲「CookieContainer」的屬性。這可以在[Microsoft.AspNet.SignalR.Client.Connection](http://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.client.connection.cookiecontainer(v = vs.111) .aspx)你可以在哪裏獲得/設置它。在這裏,你可以利用這個[答案](http://stackoverflow.com/questions/13022415/signalr-net-client-fails-to-connect-upd-how-to-set-auth-cookie)的代碼來嘗試並添加它。 – SeanPrice