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