IHttpContextAccessor 范围

IHttpContextAccessor scope

我在控制器中注入了 IHttpContextAccessor。我正在从 IHttpContextAccessor 读取用户名并将其返回给 UI.

我的问题是非常基础的。我需要了解当多个用户连接并请求用户名时这将如何工作。

我只想确保只为相应的用户返回用户名。

我不想在返回给客户端后将用户名保存在会话变量中。每当需要时,我都会请求调用并从上下文中获取它。

这种方法有效吗?

private IHttpContextAccessor ctx
public EmployeeController(IHttpContextAccessor context)
{
  ctx=context;
}

public string GetEmployeeName()
{
   return ctx.HttpContext.User.UserName;
}

HttpContextAccessor 将被注册为 Singleton 服务,当你 称为 AddHttpContextAccessor。

根据source codes,您可以发现HttpContextAccessor 在调用get 和set 方法时会检查_httpContextCurrent 值。当新请求到达应用程序时,它将自动设置 _httpContextCurrent.Value。