Raj*_*Rao 6 firebase google-cloud-firestore
我试图弄清楚如何为多租户(具有多个客户的企业应用)创建不同的角色和权限。例如,我们的应用程序有customerA和customerB,每个客户都有自己的用户(customerAUser1,customerAUser2等),并且具有不同的角色,例如“管理员”,“经理”,“关联人”,“承包商”等。这些角色每个客户都不同。他们的管理员决定他们想要扮演什么角色。
因此,说客户A的管理员注册并说他们的公司名称为“客户A”。
然后,管理员在UI中创建一个“经理”角色,并允许访问设置中的“人员”部分(假定设置中有多个选项卡)。然后创建“承包商”以使其无权访问“设置”中的任何位置。
然后管理员从excel文件导入所有用户。
excel文件将如下所示:
name, email, phone, role
john,jo@customerA.com,123456,manager
jane,jane@customerA.com,123456,contractor
Run Code Online (Sandbox Code Playgroud)
同样,customerB的AdminB注册其公司并创建自己的规则集。
现在,每次用户登录时,我们都需要确保数据不会泄漏黑白客户A和黑白客户B。因此,数据库中的每个集合都需要具有“ customerId”或其他名称。此外,我们需要根据人们的“角色”检查人们是否有权访问某些馆藏。
在Firestore DB中解决此问题的最佳方法是什么?
如果客户 A 和客户 B 从来没有拥有相同用户的情况,那么解决此问题的最佳方法是使用子集合。例如:
customers/{customer_id}/users/{user_id}
Run Code Online (Sandbox Code Playgroud)
然后,在查询和执行操作时,您始终可以锚定于此:
firebase.firestore()
.collection('customers')
.doc('customerA')
.collection('users')
.where('role','==','admin')
Run Code Online (Sandbox Code Playgroud)
如果您确实需要跨租户可见性,那么正确的方法是在文档本身中包含customer_id或。tenant_id
| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |