2014-01-10 92 views
5

我想讓SignalR使用ASP.NET標識工作。該代碼是非常簡單的,我們在那裏創建一個新的MVC5 Web應用程序,使谷歌帳戶外,與谷歌帳號登錄,並請求中心通過調用識別用戶:SignalR ASP.NET MVC5標識

Context.User.Identity

不管怎麼說,這總是返回null,並且它似乎客戶端代理不能發送外部cookie。

唯一的解決方法是做同樣的步驟如下所述:

http://gobbe.net/2013/06/13/use-the-asp-net-membership-in-a-signalr-chat-with-an-asp-net-mvc-4-application/

解決方法的工作原理,但我更願意用另一種解決方案。我也檢查了https://github.com/gustavo-armenta/CookieAuthenticationSample但這不是使用外部認證。

對於Hub如何識別ASP.NET Identity的外部身份驗證模式,您有任何其他想法嗎?

謝謝

+0

「解決方法有效,但我更願意使用其他解決方案」 - 您能給出具體的原因嗎?如果下一個有人給你提出的建議與你已經知道的解決方法有完全相同的問題怎麼辦?如果你給出原因,這可以避免。 –

+0

感謝您的反饋。我只是想了解我是否缺少某些東西,或者如果SignalR不支持使用ASP.NET身份驗證的外部身份驗證,並且如果是的話,我會回退到解決方法。 –

+0

解決方法非常不安全。惡意客戶端爲任意顯示名稱創建有效令牌並不困難。似乎作者試圖手動實現某種HMAC,但由於缺少任何形式的密鑰而完全失敗。使用諸如System.Web.Security.MachineKey或System.Security.Cryptography.ProtectedData之類的東西會更好。 – halter73

回答

8

好的。經過幾個小時的搜索,我去了網上支持和davidfowl幫助。問題是Startup類中調用的順序。我:

 app.MapSignalR(); 
     ConfigureAuth(app); 

代替:

 ConfigureAuth(app); 
     app.MapSignalR(); 

感謝大衛。