Context.User在自托管SignalR集线器中为空

时间:2014-03-19 11:02:39

标签: asp.net-mvc azure signalr asp.net-identity owin

我有一个Azure Cloud Service项目,包括Web角色和Worker角色。 Web角色是一个MVC 5应用程序,其上的身份验证设置是标准MVC 5项目中包含的内容。在我的工作角色上,我是一个自我托管的SignalR应用程序。到目前为止,它工作正常,我可以从我的Web角色调用我的工作角色的集线器,反之亦然。但是,问题是,即使我已登录我的Web角色,工作者角色SignalR hub中的Context.User也为空。

我意识到问题是我的工作人员角色没有正确连接身份验证,但我不确定如何解决这个问题。我确定这个问题与我的Startup.cs中的代码有关,这个代码在我的worker角色(非常稀疏)上,可能在我的web角色上。

我的Web角色Startup.Auth.cs,(在Startup.cs中调用):

public void ConfigureAuth(IAppBuilder app)
    {
        // Enable the application to use a cookie to store information for the signed in user
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            CookieDomain = "127.0.0.1",
            LoginPath = new PathString("/Account/Login")
        });
        // Use a cookie to temporarily store information about a user logging in with a third party login provider
        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
        ...
    }
}

我的worker角色中的Startup.cs只有映射SignalR和启用CORS的逻辑。

我也意识到我可能已离开联盟,因为我对OWIN没有任何经验,我认为这可能不是一个难以解决的问题。

1 个答案:

答案 0 :(得分:0)

不确定为什么要将Cookie域设置为127.0.0.1。无论如何,听起来像您只是想使用OWIN cookie身份验证中间件?如果是这样,这篇文章可以帮助您更好地理解它:

http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/

然后,SignalR将接收您使用cookie中间件建立的任何身份验证。