我有一个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没有任何经验,我认为这可能不是一个难以解决的问题。
答案 0 :(得分:0)
不确定为什么要将Cookie域设置为127.0.0.1。无论如何,听起来像您只是想使用OWIN cookie身份验证中间件?如果是这样,这篇文章可以帮助您更好地理解它:
然后,SignalR将接收您使用cookie中间件建立的任何身份验证。