多租户环境 - 多个成员资格提供者,每个租户1个DB,一个单一应用程序

时间:2012-12-18 14:22:15

标签: azure asp.net-membership azure-sql-database multi-tenant

我搜索了SO,找不到符合我情景的任何内容......

多租户环境 - 多个成员资格提供商,每个租户1个数据库,Azure上的一个单一应用程序......

问题很简单:

可以像这样配置Asp.net会员提供商吗?有关如何的线索?

现在你们都知道这个问题,让我们了解详细信息......

这个堆栈应该在Azure上运行,SQL Azure用于持久数据,ASP.net成员资格,MVC4,EF5和一些眼睛糖果......

挑战在于:

  1. 创建在Azure中运行单个应用程序的多租户环境(工作者角色和Web角色,但不是特定于租户或面向的);

  2. 一对一隔离数据库(每个租户一个数据库);

  3. 在每个数据库中运行一个Asp.net会员,以便对每个租户创建的用户进行身份验证和授权;

  4. 一个主数据库,包含共享数据和主要的Asp.net会员资格,只有管理员用户(主站点管理员和租户管理员)登录...

  5. 重要的是要说所有数据库都具有完全相同的结构,除了主要数据库......

    不知道是否有帮助,但堆栈还包括MVC4,EF5(DB First方法);

    实际上,我正在考虑使用MVC路由机制来收集租户标识,然后设置一个特定的Db Context,其中所有操作都应该适用;

    有什么想法吗?

2 个答案:

答案 0 :(得分:0)

默认情况下,asp.net成员资格不适用于多租户环境,因为它不支持租户标识符的概念,用于标识给定用户的成员资格和角色详细信息。要么您可以选择使用自定义成员资格提供程序,要么使用联盟或SSO,并将应用程序角色映射到用户在使用应用程序时引入的SSO角色的映射。

答案 1 :(得分:0)

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