SignalR - 将ConnectionId映射到DataBase上的一个用户**(来自DB的Custom ConnectionId)**

时间:2014-04-30 21:17:22

标签: asp.net signalr real-time signalr-hub

我想知道是否有办法在不使用ConnectionId的情况下将IPrincipal.Identity.Name映射到用户。我已经使用自定义类“IUserIdProvider”来生成userId

public class CustomUserIdProvider : IUserIdProvider
{
     public string GetUserId(IRequest request)
    {
        // your logic to fetch a user identifier goes here.
        // for example:

        ////////////////////////////////////////////////////////////////////////
        //**I do not want to use the code below to find the User in my database**
        var userId = MyCustomUserClass.FindUserId(request.User.Identity.Name);
        /////////////////////////////////////////////////////////////////////////

        return userId.ToString();
    }
}

这都是因为我没有使用ASP.NET身份验证方法。真正的需求是找到一种方法来传递用户ID以与ConnectionId时间建立关联。

我需要一种方法在此方法中从我的数据库User(user_id)中提供(或接收)数据的标识符。或者将用户与ConnectionId相关联的其他方式(逻辑)。

先谢谢!

1 个答案:

答案 0 :(得分:4)

您可以在查询字符串中将有关已连接用户的参数从客户端传递到服务器 像这样:

在客户端:

$.connection.hub.qs = "myUser=user";

在服务器端:

var myUser= Context.QueryString["myUser"];