在 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 上下文的存取。
實作方法如下:
IHttpContextAccessor
注入到控制器的建構子中。 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中文網其他相關文章!