【问题标题】:How to create multi tenant SaaS app permissions in firebase firestore如何在 Firebase Firestore 中创建多租户 SaaS 应用程序权限
【发布时间】:2018-04-27 17:03:39
【问题描述】:

我正在尝试弄清楚如何为多租户(具有多个客户的企业应用程序)创建不同的角色和权限。例如,我们的应用程序有 customerA 和 customerB,每个客户都有自己的用户(customerAUser1、customerAUser2 等)并具有自己的不同角色,如“Admins”、“Managers”、“associates”、“contractors”等。这些角色每个客户都不同。他们的管理员决定他们想要担任的角色。

所以说 customerA 的管理员注册并说他们的公司名称为“customerA”。

然后管理员在 UI 中创建“经理”角色并允许访问设置中的“人员”部分(假设设置中有多个选项卡)。然后创建“承包商”,使其无法访问“设置”中的任何位置。

然后管理员从 excel 文件中导入所有用户。

excel 文件将如下所示:

name, email, phone, role
john,jo@customerA.com,123456,manager
jane,jane@customerA.com,123456,contractor

同样,客户 B 的管理员 B 注册了他的公司并创建了自己的一套规则。

现在,每次用户登录时,我们都需要确保数据不会泄露客户 A 和客户 B。所以数据库中的每个集合都需要有“customerId”之类的。此外,我们需要检查人们是否可以根据他们的“角色”访问某些集合。

在 Firestore DB 中解决此问题的最佳方法是什么?

【问题讨论】:

  • 这是一个很好的问题。在你深入了解这个项目之前。我强烈建议您直接与 Firebase 联系,以获取有关使用 Firebase 的多租户应用程序的一些反馈 - 它可以做到,但需要权衡取舍;即使使用 Firestore;询问有关创建独立规则、管理员创建用户等的问题。您甚至可能想前往他们的 google 群组部分进行更多讨论。
  • 我尝试联系他们的支持,但他们给了我一个模糊的答案
  • 包括来自 Firebase 的 @FrankvanPuffelen。唔。他们在支持方面做得很好。作为 Firebase 的粉丝,我发现一般来说,Firebase 不是某些多租户应用程序的解决方案 - 特别是那些有不同规则集(正如您在问题中提到的)、完全独立的数据集以及拥有管理员的应用程序可以创建其他用户帐户的用户概念 同样,Firebase 很棒,并且可以使用 Firestore 完成多租户应用程序,但在深入研究之前需要考虑许多权衡。

标签: firebase google-cloud-firestore


【解决方案1】:

如果客户 A 和客户 B 从来没有拥有相同用户的情况,解决此问题的最佳方法是使用子集合。例如:

customers/{customer_id}/users/{user_id}

然后,在查询和执行操作时,您可以始终锚定于此:

firebase.firestore()
        .collection('customers')
        .doc('customerA')
        .collection('users')
        .where('role','==','admin')

如果您确实需要跨租户可见性,那么正确的方法是在文档本身中添加customer_idtenant_id

【讨论】:

  • 谢谢!我正在考虑为每个文档设置customer_id,因为同一用户可能在某些时候为其他客户工作。您认为该路径会如何查找此类应用程序中的聊天消息、用户状态等内容?再次感谢!
  • @RajaRao 你是怎么得到这个解决方案的?我正在寻找完全相同情况的解决方案。我有相当大的基于多租户的 SaaS 应用程序。
猜你喜欢
  • 2014-07-27
  • 2012-07-24
  • 2012-05-17
  • 2012-04-10
  • 1970-01-01
  • 2013-04-23
  • 2014-11-16
  • 2020-09-08
  • 2017-01-28
相关资源
最近更新 更多