>백엔드 개발 >C++ >ASP.NET Core에서 현재 사용자의 ID를 안정적으로 검색하는 방법은 무엇입니까?

ASP.NET Core에서 현재 사용자의 ID를 안정적으로 검색하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-13 12:23:43562검색

How to Reliably Retrieve the Current User's Identity in ASP.NET Core?

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 컨텍스트에 대한 액세스를 제공합니다.

이를 구현하는 방법은 다음과 같습니다.

  1. 컨트롤러 생성자에 IHttpContextAccessor를 삽입하세요.
  2. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.