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
'.NET > ASP.NET' 카테고리의 다른 글
[ASP.NET Core] ASP.NET Core Web API (2) | 2022.03.25 |
---|---|
[ASP.NET Core] MVC패턴 웹프로젝트 만들기 (0) | 2022.03.04 |
[ASP.NET Core] Razor Page로 웹프로젝트 만들기 (10) | 2022.01.24 |
[ASP.NET Core] Session (0) | 2021.11.14 |
[ASP.NET Core] Logging (0) | 2021.11.13 |