2016-07-07 24 views
6

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

感謝, 布賴恩

回答

6

通過身份源看後,你可以在通過空,以獲得正確的結果。應該先嚐試一下。