在 ASP.NET Core 控制器中擷取目前使用者
在 ASP.NET Core 控制器中存取使用者資訊需要仔細考慮以避免空引用異常。 在控制器的建構子中直接使用 HttpContext
容易出錯。
在操作方法中存取使用者資料
可靠的方法涉及在操作方法中檢索使用者詳細資訊並將其儲存在 ViewData
中。此範例假設請求中存在使用者 cookie:
<code class="language-csharp">public ActionResult Index() { string userId = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; ViewData["UserId"] = userId; return View(); }</code>
隨後,在與 ViewData["UserId"]
操作關聯的任何視圖中透過 Index
存取使用者 ID。 如果 ?.
傳回 null,則 null 條件運算子 (FindFirst
) 可防止異常。
在控制器建構函式中存取使用者資料
對於基於建構函數的訪問,請利用 IHttpContextAccessor
介面:
<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { string userId = httpContextAccessor.HttpContext?.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; // ... further processing of userId ... }</code>
確保 IHttpContextAccessor
已在您的服務配置中註冊:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); }</code>
這些技術提供了存取 ASP.NET Core 中目前使用者資料的可靠方法,最大限度地降低了執行時間錯誤的風險。 請記住使用 null 條件運算子適當處理潛在的 null 值。
以上是如何在 ASP.NET Core 控制器中存取目前使用者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!