gpt4 book ai didi

asp.net-mvc-2 - 如何使用 ASP.NET MVC2 和 MS SQL Server 在共享数据库中实现租户 View 过滤器安全模式

转载 作者:行者123 更新时间:2023-12-01 23:26:07 25 4
gpt4 key购买 nike

我开始在 ASP.NET MVC2 中构建 SaaS 业务线应用程序,但在开始之前我想建立良好的架构基础。

我将采用共享数据库和共享模式方法,因为数据架构和业务逻辑将非常简单,效率和成本效益是关键问题。

为了确保租户之间数据的良好隔离,我想实现租户 View 过滤器安全模式(看看 here)。为此,我的应用程序必须根据登录应用程序的用户模拟不同的租户(数据库登录)。登录过程需要尽可能简单(它不会是企业级软件)——所以客户应该只输入他们的用户名和密码。

用户将通过他们自己的子域(使用子域路由)访问他们的数据,如 http://tenant1.myapp.comhttp://tenant2.myapp.com

满足这种情况的最佳方法是什么?

最佳答案

我还建议使用两个数据库,一个 ConfigDB 和一个 ContentDB。

ConfigDB 包含租户表以及该表中每个租户的内容数据库的主机名、数据库名、sql 用户名和 sql 密码,并通过名为 usrAdmin 的单独 sql 用户访问

ContentDB 包含所有应用程序表,根据用户的 SID(或 SUSER_ID)进行分段,并由名为 usrTenantA、usrTenantB、usrTenantC 等的每个租户 sql 用户访问。

要检索数据,您需要以管理员身份连接到 ConfigDB,检索相应客户端的凭据,使用检索到的凭据连接到服务器,然后查询数据库。

我这样做的原因是为了水平可扩展性和按需隔离客户端的能力。

您现在可以拥有多个 ContentDB,可能每十个注册的租户创建一个新数据库,并配置您的应用程序以开始在该数据库中配置客户端。

或者,您可以提供几个 sql 服务器,在每个服务器上创建一个内容数据库,并让您的代码提供租户在历史上利用率最低的服务器上。

您也可以在服务器 A 和 B 上托管所有常规客户端,但服务器 C 可以在其自己的 INDIVIDUAL 数据库中拥有租户,所有 Multi-Tenancy 代码仍然存在,但可以告诉这些客户端,由于更高的隔离度,它们现在更安全.

关于asp.net-mvc-2 - 如何使用 ASP.NET MVC2 和 MS SQL Server 在共享数据库中实现租户 View 过滤器安全模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3567184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com