2013-04-19 3 views
2

Есть ли способ проверить, вошел ли пользователь в концентратор ?..net проверить, зарегистрирован ли пользователь в signalR

Я знаю, что я мог бы использовать это, однако HttpContext не доступен в ступице:

HttpContext.Current.User.Identity.IsAuthenticated 

-The вопрос является то, что я посылаю данные для нескольких пользователей, и предположим, что один из клиентов неактивен на некоторое время, и его/ее сеанс истекает.

Что бы я хотел сделать, это мой метод Hub => Send() (который вызывается из события), проверьте, не был ли пользователь по-прежнему зарегистрирован, если бы я не отправил сообщение своему браузеру для перезагрузки страницы.

+0

Существует способ в классе хаба, как это; 'Context.User.Identity.IsAuthenticated'. Это может помочь. –

+0

Итак, HttpContext.Current.User.Identity работает для вас с сигналом R за пределами концентратора? Я не могу заставить меня работать. HttpContext.Current.User для меня null, когда я использую SignalR – eaglei22

ответ

2

Вы можете использовать атрибут Authorize на своем концентраторе, если хотите, чтобы только аутентифицированные пользователи могли подключаться/посылаться в концентратор. Если вы хотите получить текущего пользователя, вам просто нужно получить доступ к Context.User (это свойство доступно на концентраторе).

1

вы можете проверить с помощью Context.User.Identity.IsAuthenticated

public class Chat : Hub 
{ 
    public void send(string message) 
    { 
     Clients.addMessage(message); 
    } 

    public void securesend(string message) 
    { 
     if (this.Context.User.Identity.IsAuthenticated) 
     { 
      // secure send. 
     } 
    } 
} 

reference

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