Bri*_*ian 10 identity asp.net-core
这是使用带有身份和实体框架核心的asp.net核心.我在saas应用程序上工作,我有一个单独的管理Web应用程序,您可以在其中添加新的租户到系统.创建租户后,应用程序会为新租户创建默认数据库(每个租户设置的数据库).我想为这个新数据库添加一个默认用户,但我正在努力在依赖注入系统之外创建用户管理器.
管理员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>(.........
}
}
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
看一下身份来源,似乎我可以为其中一些参数传递null,但我想确保我理解这里发生了什么,所以我没有做错任何事情.
用户管理器的源代码在这里:https: //github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/UserManager.cs
谢谢,Brian
| 归档时间: |
|
| 查看次数: |
3298 次 |
| 最近记录: |