将单个数据库ASP.NET站点转换为MultiTenant - 成员资格和角色困境

时间:2009-01-27 13:39:56

标签: asp.net vb.net roles membership provider-model

我正在将单个SQL DB网站(ASP.NET / VB.NET)更改为多租户应用程序,其中每个客户端都有自己的数据库。

在旧站点中,所有ASP角色,登录名和提供程序都指向单个数据库。

现在我们有多个数据库,我想知道最好的架构/技术是什么。有一个数据库可以配置租户,例如公司名称,各种设置(通常位于web.config中)和连接到租户数据库的连接字符串。

我们是否应该拥有所有会员资格&在配置租户的单一数据库中的角色,或者我们是否拥有会员资格?每个租户数据库中的角色?选项2似乎很棘手,因为我认为ASP.NET只喜欢在web.config中定义的一组RoleProviders。

有没有人曾经尝过这个或得到过任何建议?

2 个答案:

答案 0 :(得分:2)

如果您正在使用ASP.Net Membership模型和内置提供程序,那么将它们放入一个数据库中是最容易的,如您所示。

一个选项,我没试过,是在web.config文件中定义每个租户的提供程序。这将允许每个租户拥有自己的成员资格数据库,并允许您避免租户之间的用户名冲突(如果这是一项要求)。

答案 1 :(得分:0)

您应该能够在运行时配置ASP.NET成员资格数据库连接字符串。 This thread有一些选项,包括自定义成员资格提供程序或通过Global.asax.cs在请求生命周期的早期更改值。