我们目前正在构建多租户应用。我们希望拥有一个具有常规configDB和多个Tenant DB的应用程序。我们正在基于http上下文获取租户信息,因此我们编写了自己的连接字符串提供程序。
我们希望每个租户都有身份表。但是我们很难正确设置身份服务器。
我们以前在不需要多租户时使用了此功能,每个APP仅拥有一个数据库
.AddConfigurationStore(options =>
{
options.DefaultSchema = Schemas.Identity;
options.ConfigureDbContext = builder =>
builder.UseSqlServer(connectionStringProvider.DbConnectionString,
sqlOptions => sqlOptions.MigrationsAssembly(migrationsAssembly));
})
.AddOperationalStore(options =>
{
options.DefaultSchema = Schemas.Identity;
options.ConfigureDbContext = builder =>
builder.UseSqlServer(connectionStringProvider.DbConnectionString,
sqlOptions => sqlOptions.MigrationsAssembly(migrationsAssembly));
});
设置身份服务器。现在,仅当我们使用通用的ConfigDB时,它才起作用。但是我们希望将用户存储在租户数据库中。
所以现在打电话给:
app.UseIdentityServer()
有对options.ConfigureDbContext的调用,该尝试尝试设置Db上下文,但是此时我们没有http上下文信息,因此我们无法提供正确的租户连接字符串。
所以问题主要是:如何为每个租户设置多个配置和操作存储,以及如何使用身份服务器进行初始设置?