ASP.NET Core에서 현재 사용자 정보를 안전하게 가져오기
현재 로그인한 사용자의 신원을 아는 것은 안전하고 개인화된 ASP.NET Core 애플리케이션을 구축하는 데 중요합니다. HttpContext.User
속성은 인증된 사용자에 대한 다양한 주장을 제공합니다.
그러나 컨트롤러의 생성자 내에서 HttpContext
에 직접 액세스하면 생성자가 HTTP 요청 컨텍스트가 설정되기 전에 실행되기 때문에 null 결과가 반환되는 경우가 많습니다.
모범 사례: 작업 방법으로 사용자 ID에 액세스
가장 안정적인 방법은 컨트롤러의 작업 메서드 내에서 사용자 신원 세부정보를 검색하는 것입니다. 이는 요청 처리 중에 HttpContext
에 사용자 데이터가 올바르게 채워지는 것을 보장합니다.
예를 들어, 사용자 ID를 얻으려면:
<code class="language-csharp">public ActionResult Index() { string userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; // Further processing of user ID and claims... return View(); }</code>
대안: 생성자 액세스를 위해 IHttpContextAccessor 사용
컨트롤러 생성자 내에서 사용자 ID 정보가 필요한 경우 IHttpContextAccessor
인터페이스를 활용하세요. 이 인터페이스는 컨트롤러의 수명주기 단계에 관계없이 현재 HTTP 컨텍스트에 대한 액세스를 제공합니다.
이를 구현하는 방법은 다음과 같습니다.
IHttpContextAccessor
를 삽입하세요.HttpContext
속성을 통해 사용자 클레임에 액세스하세요.<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { string userId = httpContextAccessor.HttpContext?.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; // Subsequent use of user ID and claims... }</code>
IHttpContextAccessor
메소드에 Startup.ConfigureServices
을 등록하는 것을 잊지 마세요:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other services }</code>
null 조건부 연산자(?.
)를 사용하면 HttpContext
또는 클레임이 null인 경우 예외를 방지하는 데 도움이 됩니다. 귀하의 필요에 가장 적합한 방법을 선택하고 신뢰성을 위해 작업 방법 액세스를 우선시하십시오.
위 내용은 ASP.NET Core에서 현재 사용자의 ID를 안정적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!