2017-09-03 75 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。

简单!像魅力一样工作