首页 > 解决方案 > Firebase 项目共享工作流中的多个应用

问题描述

我计划在一个 firebase 项目中拥有多个 PWA 站点。计划是通过 app1.domain.com、app2.domain.com、app3.domain.com 访问它们。

尽管这些应用程序在原则上是不同的并且理论上彼此无关(目前),但它们确实共享一些资产,包括统一消息服务、帐户和个人资料管理等。

此外,该计划是在应用程序之间共享尽可能多的工作流。例如,我希望身份验证工作流与应用程序无关,以便只需要一次登录,并且用户会在所有应用程序中自动进行身份验证。

为了澄清我的意思,一个身份验证过程的示例:

  1. 用户访问 app1.domain.com
  2. 用户在 app1.domain.com 中单击“登录”按钮并被重定向到 login.domain.com
  3. 用户输入他们的凭据,通过身份验证并自动重定向回 app1.domain.com
  4. 用户经过身份验证后可以不受限制地使用 app1.domain.com
  5. 用户输入(在同一浏览器中)app2.domain.com
  6. 用户自动进行身份验证,就像他们在 app1.domain、com、app2.domain.com 等中一样。
  7. 用户单击 app2.domain.com 中的“注销”按钮,并在所有应用程序中退出。

如何实现这种行为?理想情况下,该解决方案将使用多个 Vue.Js 项目,因为在开发过程中处理多个项目比处理一个庞大的项目更容易。

在此先感谢,任何帮助表示赞赏。

标签: firebasevue.jsworkflowprogressive-web-apps

解决方案


这里有很多需要考虑的地方,我发现自己一开始也是这么想的。然而,一些研究使我为每个 Firebase 项目设置一个应用程序。以下是一些原因:

  • Firebase 建议每个项目使用 1 个应用程序(包括多个平台)(对于单个项目中可以拥有的应用程序数量存在非官方限制 - 我上次检查时大约 20 个)。
  • 除了重定向闪烁和额外的逻辑之外,让 Web 用户重定向到登录login.domain.com并重定向回来是很好的,但如果未来有可能拥有移动站点,则用户必须能够从每个应用程序内部登录。反而:
  • 您可以为所有应用程序创建一个通用的 UI 登录组件,并在每个应用程序的后端创建一个可调用的 Cloud Function 来与一个通用项目(没有前端,但只有 Auth、Firestore、Functions 的后端)进行跨项目连接普通用户等)。或者只是在公共项目中创建一个“/login”https 云函数,然后从其他项目向它发出异步请求。
  • 您仍然可以拥有相同的子域特定托管设置。
  • 每个应用程序都可以轻松管理分析、测试、配置等。
  • 为每个应用委派 Firebase 管理员角色/权限很容易。
  • 它易于组织(1 个应用程序 = 1 个编辑器窗口 = 1 个 Firebase 项目 = 1 个代码存储库)。

这些只是几点,但我希望它有所帮助。


推荐阅读