這是使用具有標識和實體框架核心的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
感謝, 布賴恩