C# 需要从存储库层访问登录用户
当我在.net core应用程序(N层使用.net core)体系结构中使用依赖禁令时,如何将声明当前用户对象传递到存储库层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
我的问题是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您没有清楚地问这个问题您到底想要什么!好的,没问题!我已经回答了你的问题。