ASP.NET Core 控制器中的高效用户访问
访问用户详细信息(例如电子邮件地址)对于个性化应用程序功能至关重要。 但是,在 ASP.NET Core 控制器的构造函数中直接访问用户通常会导致问题,因为 HttpContext
可能为 null。 这通常需要在每个操作方法中检索冗余的用户信息,从而影响效率。
简化的解决方案涉及使用以下内容:
<code class="language-csharp">User.FindFirst(ClaimTypes.NameIdentifier).Value</code>
这会简洁地检索用户的唯一标识符,这是访问更多用户数据(例如电子邮件)的密钥。
在构造函数中访问用户
对于需要用户在控制器的构造函数中进行访问的情况,建议使用此方法:
<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; }</code>
这依赖于 IHttpContextAccessor
依赖项,需要在应用程序的 ConfigureServices
方法中注册(在 Startup.cs
或 Program.cs
内):
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other service registrations }</code>
此设置可确保可靠地访问用户信息,而不会影响控制器性能。 请注意使用 null 条件运算符 (?.
) 来优雅地处理潜在的 null 值。
以上是如何在 ASP.NET Core 控制器中高效检索当前用户?的详细内容。更多信息请关注PHP中文网其他相关文章!