Как получить имя пользователя, вошедшего в систему в настоящее время в ASP.NET Core 2, а не сведения о пуле приложений - PullRequest
0 голосов
/ 01 июля 2019

Я ценю, что в прошлом на этот вопрос был дан ответ, но я не могу найти актуальный ответ.

Я получаю данные пользователя со следующими данными:

string userName = UserPrincipal.Current.SamAccountName;

Это работает при запуске через VS.Однако на сервере вместо этого он возвращает удостоверение пула приложений.

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

Я использую ASP.NET Core 2.2 с Razor Pages.

Спасибо.

1 Ответ

2 голосов
/ 01 июля 2019

Имя пользователя всегда доступно через:

User.Identity.Name

Вы также можете получить его из претензии:

User.FindFirstValue(ClaimTypes.Name)

Если вы не в контексте чего-то с User свойство (контроллер / просмотр / страница), тогда вам нужно будет ввести IHttpContextAccessor:

public class Foo
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public Foo(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    ...
}

И тогда:

var username = _httpContextAccessor.HttpContext?.User.Identity.Name;

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

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