我搜索了SO,找不到符合我情景的任何内容......
多租户环境 - 多个成员资格提供商,每个租户1个数据库,Azure上的一个单一应用程序......
问题很简单:
可以像这样配置Asp.net会员提供商吗?有关如何的线索?
现在你们都知道这个问题,让我们了解详细信息......
这个堆栈应该在Azure上运行,SQL Azure用于持久数据,ASP.net成员资格,MVC4,EF5和一些眼睛糖果......
挑战在于:
创建在Azure中运行单个应用程序的多租户环境(工作者角色和Web角色,但不是特定于租户或面向的);
一对一隔离数据库(每个租户一个数据库);
在每个数据库中运行一个Asp.net会员,以便对每个租户创建的用户进行身份验证和授权;
一个主数据库,包含共享数据和主要的Asp.net会员资格,只有管理员用户(主站点管理员和租户管理员)登录...
重要的是要说所有数据库都具有完全相同的结构,除了主要数据库......
不知道是否有帮助,但堆栈还包括MVC4,EF5(DB First方法);
实际上,我正在考虑使用MVC路由机制来收集租户标识,然后设置一个特定的Db Context,其中所有操作都应该适用;
有什么想法吗?
答案 0 :(得分:0)
默认情况下,asp.net成员资格不适用于多租户环境,因为它不支持租户标识符的概念,用于标识给定用户的成员资格和角色详细信息。要么您可以选择使用自定义成员资格提供程序,要么使用联盟或SSO,并将应用程序角色映射到用户在使用应用程序时引入的SSO角色的映射。
答案 1 :(得分:0)
您应该能够在运行时配置ASP.NET成员资格数据库连接字符串。 This thread有一些选项,包括自定义成员资格提供程序或通过Global.asax.cs在请求生命周期的早期更改值。