Как я могу получить доступ к зарегистрированному пользователю вне контроллера? - PullRequest
11 голосов
/ 03 сентября 2011

Я использую SignalR для обработки кликов от клиента в моем приложении MVC3.

Каждый раз, когда пользователь что-то нажимает, мне нужно проверять вошедшего в систему пользователя.

Если это быловнутри контроллера MVC3 я бы сказал:

if (User.Identity.IsAuthenticated)
{
    string username = User.Identity.Name;

    //My code here.
}

Однако это выполнение кода не входит в класс Controller.

В принципе, как я могу получить доступ к имени зарегистрированного пользователя извнеконтроллер?

1 Ответ

14 голосов
/ 03 сентября 2011

Как я могу получить доступ к имени вошедшего в систему пользователя из-за пределов контроллера?

Это зависит от того, где вы хотите получить к ним доступ.Если у вас нет доступа к HttpContext, вы всегда можете попробовать HttpContext.Current.User и молиться о том, чтобы он не был нулевым по какой-то причине, например, из-за другого потока или чего-то еще.Это особенно возможно с SignalR, который зависит от задач и большого количества асинхронной обработки.Если он находится в хабе SignalR, у вас есть доступ к пользователю:

public class Chat: Hub
{
    public void Foo()
    {
        string username = Context.User.Identity.Name;
    }
}

Лично я бы не рекомендовал вам использовать HttpContext.Current.В зависимости от того, что именно вы пытаетесь достичь и где я гарантирую вам, что есть лучшие способы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...