我正在考虑将身份服务器和asp.net身份与多租户一起使用。其想法是每个租户都将拥有自己的数据库或包含用户详细信息的共享数据库。
在决定服务器应该根据哪个数据库身份进行身份验证时。我传递了租户acr_value,它允许登录屏幕显示正在登录的租户,并且我已经创建了自己的中间件,并将其注入到dbcontext的构造函数中
public MyDbContext(DbContextProvider contextProvider) {}
public DbContextProvider (IHttpContextAccessor context, IdentityServerContext ctx)
{ //we can get the host/acr_values in here }问题是,当身份服务器重定向到连接/token或userinfo时-不再有任何东西来标识客户端,没有redirect_uri或租户,这意味着我无法生成所需的连接字符串。
我所想的是可能的吗?
发布于 2016-08-14 16:47:58
我不会使用DI来解决这个问题。
在user服务中,使用ACR值来确定要转到哪个用户DB。简单多了,魔力也少了。
发布于 2016-07-30 17:24:30
这是我的2分钱。不要使用不同的用户数据库。我个人不会做这样的多租户应用程序。您应该创建一个公共用户数据库,其中每个用户的数据库名称都在其列中。成功登录时,只需将用户与其数据库连接即可。
使用这种方法,您的应用程序可以表现为一个公共应用程序,任何用户都可以访问并注册自己。因为您有一个通用的用户数据库,所以您需要做的就是对用户注册运行一些验证,并针对该用户或公司生成一个新的数据库。
您将拥有对所有用户的完全控制权。如果您想对特定用户执行任何操作,则可以使用此方法轻松完成。您可以在我们标准化数据库以减少数据冗余时考虑这一点。类似地,通过创建一个公共用户DB,并且每个用户都有一个列来指定他的数据库,您可以使它更加灵活。
https://stackoverflow.com/questions/38672247
复制相似问题