이메일 주소와 같은 인증된 사용자 세부정보를 검색하는 것은 웹 애플리케이션에서 매우 중요합니다. 그러나 ASP.NET Core 요청 범위 컨트롤러에서 이를 효율적으로 관리하려면 신중한 고려가 필요합니다.
문제: 컨트롤러 생성자 내에서 HttpContext.User
에 직접 액세스하면 종종 null HttpContext
이 발생하여 사용자 정보 검색이 불가능해집니다. 각 작업 메서드에서 이 데이터를 반복적으로 가져오는 것은 비효율적입니다.
해결책: [Authorize]
속성과 IHttpContextAccessor
서비스를 활용하세요.
사용자 정보 접근 단계:
IHttpContextAccessor
에 Startup.cs
등록(또는 .NET 6 이상에서는 Program.cs
):<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other services }</code>
IHttpContextAccessor
을 삽입합니다.<code class="language-csharp">public class MyController : Controller { private readonly IHttpContextAccessor _httpContextAccessor; public MyController(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; //Retrieve and store user ID var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; //Further processing of userId as needed... } // ... your controller actions ... }</code>
이 접근 방식을 사용하면 컨트롤러 생성자 내에서 사용자 ID에 액세스할 수 있습니다. 그런 다음 컨트롤러 내에서 나중에 사용할 수 있도록 이 정보를 저장하여 효율성을 높이고 HttpContext.User
에 대한 반복 호출을 피할 수 있습니다. null 조건부 연산자(?.
)를 사용하면 주장이 존재하지 않을 수 있는 경우를 처리할 수 있습니다.
위 내용은 ASP.NET Core 요청 범위 컨트롤러에서 현재 사용자 정보에 효율적으로 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!