这是使用具有标识和实体框架核心的asp.net核心。我在一个saas应用程序中工作,我有一个单独的管理web应用程序,您可以在其中添加新的租户到系统。创建租户后,应用程序会为新租户创建一个默认数据库(为每个租户设置数据库)。我想添加一个默认用户到这个新的数据库,但我努力在依赖注入系统之外创建用户管理器。在内置依赖注入系统之外创建UserManager
admin web应用程序使用startup.cs中创建的用户管理器(通过内置的DI系统)作为管理员应用程序的管理器。当我将用户添加到新的租户数据库时,我没有使用DI系统我只想创建一个UserManager,其中包含与新租户数据库的连接字符串关联的IdentityDbContext。
我是一名新房客在管理应用程序创建后,使用此:
public class TenantDbInitializer
{
private Tenant tenant;
private ApplicationDbContext context;
private UserManager<ApplicationUser> userManager;
public TenantDbInitializer(Tenant tenant)
{
this.tenant = tenant;
}
public void Init()
{
// tenant contains connection string
context = new ApplicationDbContext(tenant);
var userStore = new UserStore<ApplicationUser>(context);
userManager = new UserManager<ApplicationUser>(.........
}
}
的建设的UserManager参数包含,我无法找到我应该用什么实例的实例项目。一些接口似乎有默认的实现,但我不确定这是否继续(或传递null)的方式。构造函数是:
public UserManager(IUserStore<TUser> store,
IOptions<IdentityOptions> optionsAccessor,
IPasswordHasher<TUser> passwordHasher,
IEnumerable<IUserValidator<TUser>> userValidators,
IEnumerable<IPasswordValidator<TUser>> passwordValidators,
ILookupNormalizer keyNormalizer,
IdentityErrorDescriber errors,
IServiceProvider services,
ILogger<UserManager<TUser>> logger)
它看来,我可以在一些参数传递null身份源寻找,但我要确保我明白是怎么回事就在这里,所以我不会做任何不正确。
用户管理器源是在这里: https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/UserManager.cs
感谢, 布赖恩