Единственное, что ваш AccountController должен наследовать, это Controller, если у вас нет базового класса. Тогда ваш базовый класс должен наследовать Controller, а AccountController наследует базовый класс.
Ваш UserManager и все остальные классы Identity должны работать, должны быть зарегистрированы в AutoFac. Он должен выглядеть примерно так: this , но в этой статье не говорится об использовании Entity Framework.
Чтобы использовать UnitOfWork с вашим UserStore, 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;
}
}