.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