.net проверить, вошел ли пользователь в signalR

Есть ли способ проверить, вошел ли пользователь в хаб?

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

HttpContext.Current.User.Identity.IsAuthenticated 

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

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


person ShaneKm    schedule 19.04.2013    source источник
comment
В хаб-классе есть такой способ; Context.User.Identity.IsAuthenticated. Это может помочь.   -  person Mehmet Ince    schedule 19.04.2013
comment
Итак, HttpContext.Current.User.Identity работает для вас с signalR вне концентратора? Я не могу заставить свою работать. HttpContext.Current.User для меня имеет значение null, когда я использую SignalR   -  person eaglei22    schedule 24.02.2017


Ответы (2)


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

person davidfowl    schedule 19.04.2013

вы можете проверить с помощью 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.
        }
    }
}

ссылка

person Ashwini Verma    schedule 19.04.2013
comment
Я думаю, это не мешает случайным клиентам подключаться. Однако это показывает, как можно выборочно ограничивать клиентские методы. - person Zimano; 10.03.2020