2014-09-27 3 views
0

Когда метод GetUserId дозвонился в рамках SignalR, когда у нас есть собственный IUserIdProvider следующим образом:Когда именно метод Signalr IUserIdProvider в GetUserId называется каркасом signalr

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

Как и когда делает ConnectionId к USERID отображения и как работает следующий метод:

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

Должен ли пользователь проходить аутентификацию для этого?

ответ

1

Пользователю не нужно проходить аутентификацию, чтобы пользовательский IUserIdProvider работал.

Однако если пользователь аутентифицирован и вы не замените IUserIdProvider по умолчанию своим собственным в DependencyResolver SignalR, идентификатор пользователя клиента будет равен его IPrincipal.Identity.Name.

Не существует сопоставления между идентификатором соединения клиента и идентификатором пользователя, но когда клиент подключается с помощью SignalR, он будет внутренне устанавливать подписки для приема сообщений, отправленных как идентификатору соединения, так и идентификатору пользователя. IUserIdProvider.GetUserId вызывается, когда каждое соединение SignalR установлено, поэтому SignalR может настроить подписку.

Смежные вопросы