由于 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中文网其他相关文章!