当我在.net核心中使用依赖项命令时,如何将声明当前用户对象传递到存储库层,可能是应用(使用 .Net核心的N层)体系结构
数据库
在上面的API中,项目与Model,Repository和Common具有依赖关系。
我的问题是要求用户(使用JWT中间件)需要注入存储库层,以便created_by和modified_by不能成为API层代码中的参数
答案 0 :(得分:2)
您可以使用loggedInUserId
通过以下方式在Repository Layer
中获得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);
}
}
然后,您应该在IHttpContextAccessor
类中注册Startup
,如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
// Or you can also register as follows
services.AddHttpContextAccessor();
}