2

Azure WebRole (MVC アプリ) と Azure Worker ロールがあります。

これで、Owin.SelfHost を使用して、Worker ロールで SignalR ハブをホストできるようになりました。

MVC アプリは、worker ロールでこのハブを呼び出す必要があります。これは非常に簡単です。

今私の問題は認証です。

ハブへの呼び出しを引き続き認証できるように、WebRole で WebRole の Context.User.Identity にアクセスする必要があります。

ワーカーの役割

  public class MyHub: Hub
{
  public override Task OnConnected() {
        var id = Context.User.Identity.Name; // NULL
        var connectionId = Context.ConnectionId;
  }

  [Authorize] 
  public void SendMessage() ....    
}

現在-私はこれにこだわっています

 public void Configuration(IAppBuilder app)
    {

     app.Map("/signalr", map =>
        {
            map.Run(async context =>
            {
                var userName = context.Request.Query["user"]; //NULL
                var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationType);
                identity.AddClaim(new Claim(ClaimTypes.Name, userName));
                context.Authentication.SignIn(identity);
            });

           .....
        });

}

どういうわけか、User.Context (Asp.net ID) を WebRole から Worker ロールの Owin パイプラインに渡す必要があります。

それを行う方法はありますか?

4

1 に答える 1

0

以下のリンクにある SignalR の実装は、あなたの質問に答えるはずです。

ハブ クラスを装飾する属性を詳しく見て、実装を確認できます。

Hub クラス自体の GetCurrentUserName を確認することもできます。

https://github.com/louislewis2/AngularJSAuthentication

ルイ

于 2014-10-21T20:32:06.080 に答える