首页 / 问答 / .NET Core应用程序开发中如何在EF Core的数据上下文(DbContext)中访问用户登录信息?

.NET Core应用程序开发中如何在EF Core的数据上下文(DbContext)中访问用户登录信息?

0

在.NET Core的应用程序编程开发中,如果在一个单独的类库中使用EF Core实现数据库访问层的代码,为了减少参数的传递,现在需要在数据库访问的上下文(DbContext)中直接访问HTTP请求的上下文中(HttpContext)的用户登录信息,应该如何访问呢?

比如以下类似的信息:

public override int SaveChanges()
{
    var addedAuditedEntities = ChangeTracker.Entries<ICreateAuditedEntity>()
           .Where(p => p.State == EntityState.Added)
           .Select(p => p.Entity);

    var now = DateTime.Now;

    foreach (var added in addedAuditedEntities)
    {
        added.CreatedAt = DateTime.Now;
        added.CreatedBy = ?; // 需从HttpContext中获取
        added.CreatedByDepartment = ? // 需从HttpContext中获取
    }
    return base.SaveChanges();
}
回复 [×]
提交评论
请输入评论内容

1 个回答

  • 0

    在.NET Core类库项目中,创建一个专门的用户信息服务类UserResolverService,在此类中注入IHttpContextAccessor接口实例,然后通过访问IHttpContextAccessor的实例来获取HttpContext中的用户登录信息,如下:

    Startup.cs文件中注册服务,如下:

    同时,在Startup.cs文件中注册IHttpContextAccessor

    .NET Core 2.1+ 开始,可以直接调用services.AddHttpContextAccessor();方法来注册IHttpContextAccessor服务。

    最后,在数据库访问上下文中的使用示例如下:

    当然,在ExampleContext中,除了可以访问HttpContext的用户信息,你还可以访问所有的当前请求的数据。根据具体需求实现逻辑即可。

    Rector的个人主页

    Rector

    2020-01-19 回答

    我来回答