首頁 >後端開發 >C++ >如何在 ASP.NET Core 控制器中存取目前使用者?

如何在 ASP.NET Core 控制器中存取目前使用者?

Susan Sarandon
Susan Sarandon原創
2025-01-13 11:42:44128瀏覽

How to Access the Current User in ASP.NET Core Controllers?

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn