Pal*_*mar 3 c# asp.net-core-mvc asp.net-core
如何将声明当前用户对象传递到存储库层,而我在 .net 核心中使用依赖指令可能应用程序(使用.Net 核心的N 层)架构可能是
用户界面
应用程序接口
模型
存储库
常见的
数据库
在上面的 API 中,有 Model、Repository 和 Common 的项目依赖。
我的问题是声明用户(使用 JWT 中间件)需要注入存储库层,以便 created_by 和 modified_by 不能作为 API 层代码的参数
你可以得到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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你应该IHttpContextAccessor在Startup课堂上注册如下:
public void ConfigureServices(IServiceCollection services)
{
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
// Or you can also register as follows
services.AddHttpContextAccessor();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
826 次 |
| 最近记录: |