You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否应避免使用IHttpContextAccessor?DI服务中如何获取用户信息

在DI服务中使用IHttpContextAccessor获取用户信息的疑问与实践

关于在依赖注入(DI)服务中通过IHttpContextAccessor获取用户信息的资料有很多,但该接口的官方提示明确要求谨慎使用:

应谨慎使用此接口。它依赖AsyncLocal,会对异步调用产生负面影响,还会引入对“环境状态”的依赖,增加测试难度。

我在想,会不会有人认为直接通过这种方式获取用户信息是代码坏味道?那我是不是应该改为从控制器层向下传递用户信息?或者有没有办法通过中间件来实现类似需求?

更新:实现示例代码

public class CurrentUserNameProvider : ICurrentUserNameProvider
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public CurrentUserNameProvider(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    /// <summary>
    /// 获取当前用户名
    /// </summary>
    /// <returns></returns>
    public string GetCurrentUserName()
    {
        var user = _httpContextAccessor.HttpContext?.User;
        return user.Identity.Name;
    }
}

内容的提问来源于stack exchange,提问作者JamesB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:07:02