我如何获得UserName,我使用ASP.NET Core MVC和Identity?

问题描述:

public override int SaveChanges() 
{ 
    var modifiedEntries = ChangeTracker.Entries().Where(x => x.Entity is IAuditableEntity && x.State == EntityState.Added || x.State == EntityState.Modified); 
    ApplicationUser userLogIn = new ApplicationUser(); 

    foreach (var entry in modifiedEntries) 
    { 
     if(entry != null) 
     { 
      var entity = entry.Entity as IAuditableEntity; 

      //in MVC5 i use HttpContext.Current.User.Identity.Name//In MVC6 I don't know to do 

      var user = "User"; 
      var now = DateTime.Now; 
      if (entry.State == EntityState.Added) 
      { 
       entity.CreatedBy = user; 
       entity.CreatedOn = now; 
       entity.IsDeleted = false; 
      } 
      else 
      { 
       base.Entry(entity).Property(x => x.CreatedBy).IsModified = false; 
       base.Entry(entity).Property(x => x.CreatedOn).IsModified = false; 
       base.Entry(entity).Property(x => x.IsDeleted).IsModified = false; 
      } 
      entity.UpdatedBy = user; 
      entity.UpdatedOn = now; 
     } 
    } 

    return base.SaveChanges(); 
} 

只是注入的IHttpContextAccessor到类(作为构造函数依赖),那么你可以从上下文里面User对象获取名称:

private IHttpContextAccessor context; 
public SomeRepo(IHttpContextAccessor context) 
{ 
    this.context = context; 
} 

//in your method 
var userName = this.context.HttpContext.User.Identity.Name; 

由于您使用的是身份的框架,如果你除了名字之外需要当前用户提供额外的数据,你可以使用GetUserAsync(HttpContext.User)

+0

这样的方法来注入UserManager<ApplicationUser>并检索整个ApplicationUser对象。非常感谢,正是我需要的! – user3461429