firebase 项目共享工作流中的多个应用程序
Multiple apps within firebase project sharing workflows
我计划在一个 firebase 项目中拥有多个 PWA 站点。
计划是通过 app1.domain.com、app2.domain.com、app3.domain.com.
访问它们
尽管这些应用程序在原则上是不同的并且理论上彼此没有任何关系(目前),但它们确实共享一些资产,包括统一的消息服务、帐户和个人资料管理等。
此外,计划是在应用程序之间共享尽可能多的工作流程。例如,我希望身份验证工作流程与应用程序无关,这样它只需要一次登录,用户就会在所有应用程序中自动进行身份验证。
为了阐明我的意思,举一个验证过程的例子:
- 用户前往 app1.domain.com
- 用户在 app1.domain.com 内点击 "Login"-Button 并被重定向到 login.domain.com
- 用户输入他们的凭据,获得身份验证并自动重定向回 app1.domain.com
- 用户可以使用 app1.domain.com 不受限制,因为他们已通过身份验证
- 用户输入(在同一浏览器中)app2.domain.com
- 用户会自动进行身份验证,就像他们在 app1.domain、com、app2.domain.com 等
中一样
- 用户点击 app2.domain.com 中的 "Logout"- 按钮,然后在所有应用中退出。
如何实现这样的行为?理想情况下,该解决方案将采用多个 Vue.Js 项目,因为在开发过程中处理多个项目比处理一个庞大的项目更容易。
在此先致谢,如有任何帮助,我们将不胜感激。
这里有很多要考虑的问题,我发现自己一开始也是这么想的。然而,一些研究使我得到了每个 Firebase 项目设置 1 个应用程序。以下是一些原因:
- Firebase 建议每个项目 1 个应用程序(包括多个平台)(对于单个项目中可以拥有的应用程序数量有一个非官方的限制 - 我上次检查时大约 20 个)。
- 除了重定向闪烁和额外的逻辑之外,让网络用户重定向到登录
login.domain.com
并重定向回来是很好的,但是如果将来有移动网站的可能性,用户将必须能够登录从每个应用程序内部。相反:
- 您可以创建一个所有应用程序通用的 UI 登录组件,并在每个应用程序的后端创建一个可调用的 Cloud Functions 以跨项目连接到一个通用项目(没有前端但只有 Auth、Firestore、普通用户的功能等的后端)。或者简单地在公共项目中创建一个单独的 '/login' https Cloud Function,并从其他项目向它发出异步请求。
- 您仍然可以使用相同的子域特定托管设置。
- 可以轻松管理每个应用的分析、测试、配置等。
- 为每个应用委派 Firebase 管理员 roles/permissions 很容易。
- 易于组织(1 个应用程序 = 1 个编辑器 window = 1 个 Firebase 项目 = 1 个代码存储库)。
以上只是几点,希望对你有所帮助。
我计划在一个 firebase 项目中拥有多个 PWA 站点。 计划是通过 app1.domain.com、app2.domain.com、app3.domain.com.
访问它们尽管这些应用程序在原则上是不同的并且理论上彼此没有任何关系(目前),但它们确实共享一些资产,包括统一的消息服务、帐户和个人资料管理等。
此外,计划是在应用程序之间共享尽可能多的工作流程。例如,我希望身份验证工作流程与应用程序无关,这样它只需要一次登录,用户就会在所有应用程序中自动进行身份验证。
为了阐明我的意思,举一个验证过程的例子:
- 用户前往 app1.domain.com
- 用户在 app1.domain.com 内点击 "Login"-Button 并被重定向到 login.domain.com
- 用户输入他们的凭据,获得身份验证并自动重定向回 app1.domain.com
- 用户可以使用 app1.domain.com 不受限制,因为他们已通过身份验证
- 用户输入(在同一浏览器中)app2.domain.com
- 用户会自动进行身份验证,就像他们在 app1.domain、com、app2.domain.com 等 中一样
- 用户点击 app2.domain.com 中的 "Logout"- 按钮,然后在所有应用中退出。
如何实现这样的行为?理想情况下,该解决方案将采用多个 Vue.Js 项目,因为在开发过程中处理多个项目比处理一个庞大的项目更容易。
在此先致谢,如有任何帮助,我们将不胜感激。
这里有很多要考虑的问题,我发现自己一开始也是这么想的。然而,一些研究使我得到了每个 Firebase 项目设置 1 个应用程序。以下是一些原因:
- Firebase 建议每个项目 1 个应用程序(包括多个平台)(对于单个项目中可以拥有的应用程序数量有一个非官方的限制 - 我上次检查时大约 20 个)。
- 除了重定向闪烁和额外的逻辑之外,让网络用户重定向到登录
login.domain.com
并重定向回来是很好的,但是如果将来有移动网站的可能性,用户将必须能够登录从每个应用程序内部。相反: - 您可以创建一个所有应用程序通用的 UI 登录组件,并在每个应用程序的后端创建一个可调用的 Cloud Functions 以跨项目连接到一个通用项目(没有前端但只有 Auth、Firestore、普通用户的功能等的后端)。或者简单地在公共项目中创建一个单独的 '/login' https Cloud Function,并从其他项目向它发出异步请求。
- 您仍然可以使用相同的子域特定托管设置。
- 可以轻松管理每个应用的分析、测试、配置等。
- 为每个应用委派 Firebase 管理员 roles/permissions 很容易。
- 易于组织(1 个应用程序 = 1 个编辑器 window = 1 个 Firebase 项目 = 1 个代码存储库)。
以上只是几点,希望对你有所帮助。