Подтвердить что ты не робот

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

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

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

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

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

    //My code here.
}

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

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

4b9b3361

Ответ 1

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

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

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

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