【发布时间】:2015-06-23 12:12:37
【问题描述】:
如果这是与其他内容的重复,请提前道歉 - 我看到很多帖子都围绕着类似的问题,但没有解决我的具体情况。
我们正在做的是使用 ASP.NET MVC 5 和 Identity Framework 以及 Entity Framework 生成一个 SaaS 系统。由于安全要求,我们需要使用多数据库模型。用户将通过主“帐户”数据库进行身份验证,该数据库会将他们链接到租户,然后我们将在运行时修改连接字符串,以便 DbContext 可以针对租户的正确数据库。到目前为止,我对此感到满意。
棘手的部分是每个用户可能链接到多个租约,并且能够在它们之间切换。这意味着他们将需要为每个租户提供一组不同的角色/声明,具体取决于在每个租户中分配的权限。我不确定如何将dbo.AspNetRoles 和dbo.AspNetUserRoles 表移动到租户数据库中,或者即使这是正确的策略。
数据库结构(建议)
Accounts <--all users in here
SL3-1111 <--DB for tenant ID #1111
SL3-2222 <--DB for tenant ID #2222
我猜我需要:
- 将 Roles 和 UserRoles 表移动到每个租户数据库,或
- 以某种方式覆盖默认行为以填充我自己的声明
我计划一旦用户指定了他们希望使用的租户,该信息将作为声明存储在 cookie 中,并在每次请求时读出以定位正确的数据库。
【问题讨论】:
-
您应该有一个元数据数据库,其中包含用户的租户及其角色映射。仅租户的实际数据[业务数据]可以进入单独的数据库
标签: c# asp.net-mvc entity-framework asp.net-identity multi-tenant