使用SignalR通知已连接的客户端新登录Web.API

时间:2016-04-03 22:46:21

标签: oauth-2.0 signalr asp.net-web-api2 signalr-hub

我有一组使用ASP.NET Web API 2开发的API。目前,用户需要在使用大多数API(一些是公开的)之前进行身份验证。这是我缩小的OAuthProvider。

public class MyOAuthProvider : OAuthAuthorizationServerProvider
{
  // Validation of user name and password takes place here
  // Code not show for brevity
  // If user is validated issue then issue them a JWT token 

  ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager, "JWT");

  var ticket = new AuthenticationTicket(oAuthIdentity, null);

  context.Validated(ticket);
}

在单独的应用程序中,我尝试使用SignalR并拥有一个Hub类,它接受用户的connectionId和userName,并将其存储到名为connectionDictionary的内存中的字典中。

public class ChatHub : Hub
{
    public static Dictionary<string,string> connectionDictionary = new Dictionary<string, string>();

    public override Task OnConnected()
    {
        connectionDictionary.Add(Context.ConnectionId, Context.User.Identity.Name);
        return base.OnConnected();
    }
}

如何将这些连接在一起,以便当用户使用API​​进行身份验证时,他们的connectionId和userName是否存储在Dictionary中?我们的想法是,一旦用户登录,我将通知所有其他连接的客户端。

0 个答案:

没有答案