首頁 > 後端開發 > C++ > 如何在 ASP.NET Core 中可靠地檢索目前使用者的身分?

如何在 ASP.NET Core 中可靠地檢索目前使用者的身分?

Mary-Kate Olsen
發布: 2025-01-13 12:23:43
原創
558 人瀏覽過

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

在 ASP.NET Core 中安全取得目前使用者資訊

了解目前登入使用者的身份對於建立安全且個人化的 ASP.NET Core 應用程式至關重要。 HttpContext.User 屬性提供了大量有關經過驗證的使用者的聲明。

但是,在控制器的建構函式中直接存取 HttpContext 通常會產生 null 結果,因為建構函式在 設定 HTTP 請求上下文之前執行

最佳實務:在操作方法中存取使用者身分

最可靠的方法是在控制器的操作方法中檢索使用者身分詳細資訊。 這保證了 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 進行建構函式存取

如果您需要控制器建構函式中的使用者識別訊息,請利用 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 中可靠地檢索目前使用者的身分?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板