我有一组使用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中?我们的想法是,一旦用户登录,我将通知所有其他连接的客户端。