.NET/ASP.NET

[ASP.NET Core] HttpContext.User

클리엘 2022. 2. 10. 15:31
728x90

Controller 라면 User 키워드를 통해서 현재 로그인한 사용자의 정보를 가져올 수 있습니다. 예를 들어 아이디를 검색하려면 다음과 같이 할 수 있습니다.

string user = User?.Claims.Where(a => a.Type == ClaimTypes.NameIdentifier)?.FirstOrDefault()?.Value ?? string.Empty;

Controller가 아닌 Controller에서 참조하는 외부클래스에서 User개체에 직접 접근해야 한다면 HttpContext를 통해야 합니다.

 

이를 위해 Program.cs에서 아래와 같이 AddHttpContextAccessor 서비스를 등록하고

builder.Services.AddHttpContextAccessor();
builder.Services.AddControllers();

User가 필요한 해당 클래스에서는 생성자 주입을 통해 HttpContext 개체를 가져오면 됩니다.

public class MyClass
{

private readonly IHttpContextAccessor _httpContextAccessor;

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

public string UserID()
{
    return _httpContextAccessor.HttpContext.User?.Claims.Where(a => a.Type == ClaimTypes.NameIdentifier)?.FirstOrDefault()?.Value ?? string.Empty;
}

}

 

728x90