繁体   English   中英

我如何获得UserName,我使用ASP.NET核心MVC和身份?

[英]How I get the UserName, I use ASP.NET Core MVC and 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)注入UserManager<ApplicationUser>并检索整个ApplicationUser对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM