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