2014-09-27 26 views
0

什么时候GetUserId方法获得由SignalR框架调用的时候,我们有一个自定义IUserIdProvider叫如下:当正好Signalr IUserIdProvider的方法GetUserId由signalr框架

public class RealTimeNotificationsUserIdProvider : IUserIdProvider 
{ 
    public string GetUserId(IRequest request) 
    { 
     return request.QueryString["userId"]; 
    } 
} 

如何以及何时将的ConnectionId到的用户ID映射发生以及以下方法如何工作:

Clients.User("1").notify(notificationsJson); 

是否必须对用户进行身份验证才能正常工作?

回答

1

用户不需要进行身份验证自定义IUserIdProvider工作。但是,如果用户已通过身份验证,并且您没有用SignalR的DependencyResolver中的自己的默认IUserIdProvider替换,则客户端的用户ID将等于它的IPrincipal.Identity.Name

没有客户端的连接ID和用户ID之间的映射准确,但是当一个客户端连接使用SignalR,它会在内部建立订阅接收发送到它的连接ID和用户ID两个消息。建立各SignalR连接时IUserIdProvider.GetUserId被调用,因此SignalR可以设置订阅。