Имя пользователя всегда доступно через:
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
может быть нулевым,в зависимости от того, находитесь ли вы в контексте активного запроса, поэтому вам придется компенсировать это пустой проверкой, если вы зависите от имени пользователя.