1

我正在为我们的客户设计一个 Web 应用程序,其中每个客户都有一个进入系统的唯一门户。每个客户都需要能够管理他们自己的一组用户,而不用关心其他客户的用户,因此两个不同的客户都需要能够拥有一个用户 jasonsmith。

同时,一个客户表明不知道另一个客户的存在,也不知道这是一个多客户系统。

今天实施这样一个系统的标准是什么?我应该去哪里了解更多关于如何最好地实施这样一个系统的信息。

4

1 回答 1

3

您所说的称为多租户

有几种方法可以解决这个问题。

最常见的方法是:

单一数据库

所有租户共享同一个数据库。因此,您将拥有一张包含所有租户信息的租户表。所有其他表都使用租户 ID 作为外键。

问题是您必须确保用户只能访问自己的信息(例如,用户可以尝试更改 uri 中的 id)。因此,您必须验证用户尝试访问的每个对象。

多个数据库

一些数据库引擎(如 RavenDB)可以毫无问题地处理多个数据库。这意味着每个客户都有自己的数据库(在用户被识别后,您在每个请求开始时加载该数据库)。

因此,在身份验证期间您将拥有一个数据库用户,以便能够识别租户和每个客户一个数据库。

这个解决方案的好处是租户不可能访问彼此的数据库。(除非他们已经入侵了该帐户)

于 2012-08-21T17:37:29.350 回答