由於 null
的潛在 HttpContext
值,在 ASP.NET Core 控制器的建構函式中存取目前使用者可能會帶來挑戰。本文提供了有效的解決方案,無需重複調用即可有效檢索使用者資訊。
使用 HttpContext.User.GetUserId()
的常見方法在建構函式中失敗。為了優化使用者資料檢索,首選集中式方法。
解決此問題的方法如下:
在控制器操作中:使用HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value
取得使用者ID。
在建構子內(利用 IHttpContextAccessor):
IHttpContextAccessor
並將其註冊到ConfigureServices
中。 IHttpContextAccessor
注入控制器的建構子並存取使用者 ID,如下所示:<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; }</code>
請注意新增了 null 條件運算子 (?.
) 以優雅地處理潛在的 null 值。 如果 User
或 FindFirst
傳回 null,這可以防止異常。
以上是如何在 ASP.NET Core 控制器建構子中存取目前使用者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!