多租户应用程序 - 对不属于特定标签的用户进行访问,例如:客户

时间:2013-06-10 10:17:02

标签: ruby-on-rails multi-tenant

我正在使用ruby on rails上的多租户项目管理应用程序,并且对于可能不属于特定租户的用户实施访问权限感到困惑。

例如,我们有用户Bob和Martha,他们属于租户A - 或者还有另外两个用户,即Jim和Jill属于租户B.现在我们有一个名为Mark的客户,他是两个租户的客户。两个租户都有项目,我需要为客户构建一个可访问的表单,以便客户可以登录并查看他的项目。问题是我不想要,显然没有客户希望在这里为每个租户单独登录。我有兴趣在这里自己编写租户管理编码,但是我对如何实现这个问题感到困惑。

我正在实施基于行的租赁,即每个模型都会在此处引用租户模型,并且用户可以编辑并添加属于其租户的任何内容。但是,对于客户或可能需要访问多个租户的顾问用户的可能情况 - 如何在此处设置结构。

理想情况下,客户希望能够登录并查看租户/公司不同的所有项目的列表。我该如何设置这个结构?此外,我希望保持这种开放性,以便TenantB的用户也可能成为TenantA的客户。

1 个答案:

答案 0 :(得分:2)

  

问题是我不想要,显然没有客户希望在这里为每个租户单独登录。

他们实际上确实想要这一点,主要是出于法律,审计或安全原因。

多租户恰恰意味着数据的分离。因此,在登录期间或之后,您选择一个租户。之后,您只能看到该租户的确切数据。之后没有突破:可以切换到另一个租户,但不能合并不同租户的数据。

如果这不是您想要的,请考虑重新设计您的数据模型:可以在项目和人员之间进行分配。通过在链接回客户的项目中使用外键,客户可以拥有自己的“自己的”项目。这种数据模型方法不同于使用多租户方法,这种方法实际上是在行或实例级别上分离数据的技术手段。