Unitofwork,AutoFac,存储库和身份



我如何在单位工程中使用身份?
我希望AccountController从Unitofwork

继承

不是

IApplicationUserManager userManager,
IApplicationSignInManager signInManager,
IAuthenticationManager authenticationManager,
IApplicationRoleManager applicationRoleManager

我想使用身份,但不使用实体框架
我进行了很多搜索,但没有任何结果

除非您有基础类,否则您的帐户控制器应该继承的唯一的是控制器。然后,您的基类应继承控制器和accountController继承基类。

您的UserManager和所有其他类别的身份都需要工作,需要在AutoFac注册。它应该看起来像这样,但是该文章没有谈论使用实体框架。

要与userstore一起使用unitofwork,iunitofwork将需要成为一个参数,并且您需要告诉autoFac您通过哪些参数。这样的东西。

    builder.RegisterType<ApplicationUserStore>().As<IUserStore<UserMamber>>()
            .WithParameter(new TypedParameter(typeof(IUnitOfWork), new UnitOfWork()))
            .InstancePerRequest();

编辑:以下是您要求的附加代码:

public class UserStore<TUser> : IUserStore<TUser, int>
   where TUser : IdentityMember, new()
{
    private UserTable<TUser> _userTable;
    private IUnitOfWork _db { get; set; }
    public UserStore(IUnitOfWork database)
    {
        _db = database;
        _userTable = new UserTable<TUser>(database);
    }
    public Task<TUser> FindByNameAsync(string userName)
    {
        return Task.FromResult(_userTable.Login(userName));
    }
}
public class UserTable<TUser> where TUser : IdentityMember, new()
{
    private readonly IUnitOfWork _unitOfWork;
    public UserTable(IUnitOfWork unitOfWork)
    {
        this._unitOfWork = unitOfWork;
    }
    public TUser Login(string userName)
    {
        var y = _unitOfWork.WebPortalUsers.FindByUserName(userName);
        var Identity = new TUser();
        if(Identity != null)
        {
            Identity.UserName = y.UserName;
            Identity.Id = y.Id;
        }
        return Identity;
    }
}

相关内容

  • 没有找到相关文章

最新更新