ASP.NET Core 控制器中的高效能使用者存取
存取用戶詳細資訊(例如電子郵件地址)對於個人化應用程式功能至關重要。 但是,在 ASP.NET Core 控制器的建構子中直接存取使用者通常會導致問題,因為 HttpContext
可能為 null。 這通常需要在每個操作方法中檢索冗餘的使用者訊息,從而影響效率。
簡化的解決方案涉及使用以下內容:
<code class="language-csharp">User.FindFirst(ClaimTypes.NameIdentifier).Value</code>
這會簡潔地檢索使用者唯一的標識符,這是存取更多使用者資料(例如電子郵件)的密鑰。
在建構函式中存取使用者
對於需要使用者在控制器的建構函式中進行存取的情況,建議使用此方法:
<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; }</code>
這依賴於 IHttpContextAccessor
依賴項,需要在應用程式的 ConfigureServices
方法中註冊(在 Startup.cs
或 Program.cs
內):
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other service registrations }</code>
此設定可確保可靠地存取使用者訊息,而不會影響控制器效能。 請注意使用 null 條件運算子 (?.
) 來優雅地處理潛在的 null 值。
以上是如何在 ASP.NET Core 控制器中有效地擷取目前使用者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!