Bri*_*ogg 6 firebase google-cloud-firestore
我正在考虑使用Firebase和Firestore创建多租户应用程序。租户的数量将很少(最初约为6个),最终用户将不会在应用程序上创建自己的实例,而是由管理员严格控制的。
我的理想情况是只有一个应用程序,可以将多个域附加到该应用程序,并将请求路由到特定数据库以实现它们。
我有一些担忧:
我已经阅读了文档,可以为每个应用程序创建多个数据库,但是在管理面板中看不到这些选项,因此我不确定文档当前是否不正确(或者是否引用了Realtime DB)。
我不希望将注册的用户注册到所有租户,并且考虑到Firebase身份验证似乎可以正常工作的方式,我看不到可以指定用户注册到哪个域的任何方法。我曾想过要在一个集合中进行管理,该集合可跟踪用户所属的域,并对其进行伪造,以使其看起来像是使用户处于孤立状态,但是如果用户在“两个”租户中注册,并想要更改其登录名,凭据,这会在整个网络上对其进行更改,并且可能会造成混淆。
因此,听起来这将无法像我所希望的那样干净,这将使我指向选项2:
拥有一个前端应用程序,该应用程序引用了它可以连接到的所有Firebase应用程序,并与独立应用程序的后端联系,以保持数据和用户身份验证的分离。这样可以解决孤立的用户问题,但是随后我将在后端维护几个不同的应用程序,而制作此产品的新版本的全部目的是摆脱维护多个,相似但略有不同的代码库的麻烦。解决该问题的一种方法是将相同的代码存储库部署到firebase上的不同应用程序:CLI是否允许我每次选择我的部署目标?
我认为选项3是让无头React应用程序联系节点服务器或其他东西,但是那样我会失去所有出色的Firebase优势,而我真的在挖掘Firebase。
这是一个可解决的问题吗?还是我想将方形钉塞入圆孔?
谢谢!
小智 5
我的团队最近解决了类似的情况,我们需要使用 Firebase 跨多个租户部署单个 Angular 应用程序。
我们提出的解决方案与您的第二个选项非常相似:
.firebaserc在根目录中添加 为每个新创建的项目添加别名。这看起来像:{
"projects": {
"dev": "my-dev-project-id",
"tenant1": "my-tenant1-project-id",
"tenant2": "my-tenant2-project-id"
}
}
Run Code Online (Sandbox Code Playgroud)
firebase serve -P dev并通过以下方式部署特定项目:firebase serve -P dev。默认情况下,这会将您的项目部署到 Firebase 托管并部署您创建的任何关联的云功能,但您可以轻松自定义此行为。./deploy-all.sh脚本来迭代项目并替换每个别名。您还可以自定义它以在部署每个项目之前运行 linting/instillation 等。 your-app.firebaseapp.comyour-app.web.app注意事项: 上述方法依赖于租户 URL 将项目数据库映射到用户信息。在移动设备上,这种方法变得稍微复杂一些。我们让用户在移动设备上输入一个动态映射到 Firebase 配置的密钥,但可能有更好的方法来实现这一点。
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |