Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要从存储库层访问登录用户_C#_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# 需要从存储库层访问登录用户

C# 需要从存储库层访问登录用户,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,当我在.net core应用程序(N层使用.net core)体系结构中使用依赖禁令时,如何将声明当前用户对象传递到存储库层 用户界面 原料药 模型 存储库 普通的 数据库 在上面的API中,项目依赖于模型、存储库和公共 我的问题是Claim User(使用JWT中间件)需要注入到存储库层,这样创建的和修改的不能是API层代码中的参数,您可以使用IHttpContextAccessor在存储库层中获得loggedInUserId,如下所示: public class Reposito

当我在.net core应用程序(N层使用.net core)体系结构中使用依赖禁令时,如何将声明当前用户对象传递到存储库层

  • 用户界面

  • 原料药

  • 模型

  • 存储库

  • 普通的

  • 数据库

    在上面的API中,项目依赖于模型、存储库和公共


  • 我的问题是Claim User(使用JWT中间件)需要注入到存储库层,这样创建的和修改的不能是API层代码中的参数,您可以使用
    IHttpContextAccessor
    存储库层中获得
    loggedInUserId
    ,如下所示:

    public class Repository
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        public Repository(IHttpContextAccessor httpContextAccessor)
        {
           _httpContextAccessor = httpContextAccessor;
        }
    
       public void YourRepositoryMethod()
       {
          var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
          // or
          var userId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
       }
    }
    
    public void ConfigureServices(IServiceCollection services)
    {
        services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    
        // Or you can also register as follows
    
        services.AddHttpContextAccessor();
    }
    
    然后您应该在
    启动
    类中注册
    IHttpContextAccessor
    ,如下所示:

    public class Repository
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        public Repository(IHttpContextAccessor httpContextAccessor)
        {
           _httpContextAccessor = httpContextAccessor;
        }
    
       public void YourRepositoryMethod()
       {
          var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
          // or
          var userId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
       }
    }
    
    public void ConfigureServices(IServiceCollection services)
    {
        services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    
        // Or you can also register as follows
    
        services.AddHttpContextAccessor();
    }
    
    public void配置服务(IServiceCollection服务)
    {
    services.TryAddSingleton();
    //或者你也可以注册如下
    AddHttpContextAccessor();
    }
    
    你想要什么?您想从存储库层访问登录的用户,是吗?是的,Tanvir,任何帮助都会很好您没有使用依赖项注入吗?@PalaniKumar您没有清楚地问这个问题您到底想要什么!好的,没问题!我已经回答了你的问题。