Asp.net core 在AutoMapper配置文件中登录用户

Asp.net core 在AutoMapper配置文件中登录用户,asp.net-core,automapper,asp.net-core-webapi,Asp.net Core,Automapper,Asp.net Core Webapi,我有asp.NETCore2.0WebAPI项目。 每个域类都继承BaseEntity类: public class BaseEntity { public Guid Id { get; set; } public DateTime CreatedOn { get; set; } public Guid CreatedBy { get; set; } public DateTime ModifiedOn { get; set; } public G

我有asp.NETCore2.0WebAPI项目。 每个域类都继承BaseEntity类:

public class BaseEntity
{
    public Guid Id { get; set; }

    public DateTime CreatedOn { get; set; }

    public Guid CreatedBy { get; set; }

    public DateTime ModifiedOn { get; set; }

    public Guid ModifiedBy { get; set; }
}
为了将视图模型转换为DTO-s,我使用AutoMapper

我创建了两个配置文件,一个用于ViewModel到DTO,另一个用于DTO到ViewModel

在将ViewModels映射到DTO的配置文件中,我需要
BaseEntity
字段

    public Guid CreatedBy { get; set; }

    public Guid ModifiedBy { get; set; }
要从授权用户映射。我已经设置了身份验证,只需要从AutoMapper profile类访问授权用户对象


有什么方法可以做到这一点吗?

您必须使用AutoMapper中的自定义值解析程序将您的用户对象放入上下文中

配置文件配置

Mapper.CreateMap<ViewModel, Dto>()
    .ForMember(d => d.CreatedBy, opt => opt.ResolveUsing((src, dest, destMember, res) => res.Context.Options.Items["CreatedBy"]));
Mapper.CreateMap()
.FormMember(d=>d.CreatedBy,opt=>opt.ResolveUsing((src,dest,destMember,res)=>res.Context.Options.Items[“CreatedBy”]);
调用Mapper时

Mapper.Map<ViewModel, Dto>(src, opt => opt.Items["CreatedBy"] = this.createdByUserObject);
Mapper.Map(src,opt=>opt.Items[“CreatedBy”]=this.createdByUserObject);
请参阅和。