firebase - Firebase 项目共享工作流中的多个应用
问题描述
我计划在一个 firebase 项目中拥有多个 PWA 站点。计划是通过 app1.domain.com、app2.domain.com、app3.domain.com 访问它们。
尽管这些应用程序在原则上是不同的并且理论上彼此无关(目前),但它们确实共享一些资产,包括统一消息服务、帐户和个人资料管理等。
此外,该计划是在应用程序之间共享尽可能多的工作流。例如,我希望身份验证工作流与应用程序无关,以便只需要一次登录,并且用户会在所有应用程序中自动进行身份验证。
为了澄清我的意思,一个身份验证过程的示例:
- 用户访问 app1.domain.com
- 用户在 app1.domain.com 中单击“登录”按钮并被重定向到 login.domain.com
- 用户输入他们的凭据,通过身份验证并自动重定向回 app1.domain.com
- 用户经过身份验证后可以不受限制地使用 app1.domain.com
- 用户输入(在同一浏览器中)app2.domain.com
- 用户自动进行身份验证,就像他们在 app1.domain、com、app2.domain.com 等中一样。
- 用户单击 app2.domain.com 中的“注销”按钮,并在所有应用程序中退出。
如何实现这种行为?理想情况下,该解决方案将使用多个 Vue.Js 项目,因为在开发过程中处理多个项目比处理一个庞大的项目更容易。
在此先感谢,任何帮助表示赞赏。
解决方案
这里有很多需要考虑的地方,我发现自己一开始也是这么想的。然而,一些研究使我为每个 Firebase 项目设置一个应用程序。以下是一些原因:
- Firebase 建议每个项目使用 1 个应用程序(包括多个平台)(对于单个项目中可以拥有的应用程序数量存在非官方限制 - 我上次检查时大约 20 个)。
- 除了重定向闪烁和额外的逻辑之外,让 Web 用户重定向到登录
login.domain.com
并重定向回来是很好的,但如果未来有可能拥有移动站点,则用户必须能够从每个应用程序内部登录。反而: - 您可以为所有应用程序创建一个通用的 UI 登录组件,并在每个应用程序的后端创建一个可调用的 Cloud Function 来与一个通用项目(没有前端,但只有 Auth、Firestore、Functions 的后端)进行跨项目连接普通用户等)。或者只是在公共项目中创建一个“/login”https 云函数,然后从其他项目向它发出异步请求。
- 您仍然可以拥有相同的子域特定托管设置。
- 每个应用程序都可以轻松管理分析、测试、配置等。
- 为每个应用委派 Firebase 管理员角色/权限很容易。
- 它易于组织(1 个应用程序 = 1 个编辑器窗口 = 1 个 Firebase 项目 = 1 个代码存储库)。
这些只是几点,但我希望它有所帮助。
推荐阅读
- javascript - Javascript 自动计数 30 天并从表中删除数据
- anylogic - 为什么我使用 getRouteData() 和 getNumberOfTransporters() 的 transporterControl 方法错误?
- php - 使用 PutFileAS() laravel 将文件存储在存储文件夹中
- laravel - Laravel api 版本控制 - 如何处理版本之间的共享功能?
- iphone - 由于在应用程序中订阅,应用程序被 App Store 拒绝
- elixir - 酿酒厂失败并显示消息“多重定义模块:'Elixir.Telemetry'”
- pyspark - Pyspark 命令移动到新行
- pic - 来自定时器输出的 PIC I2C 时钟
- android - RTC_WAKEUP 和 BroadcastReceiver 的警报以拦截打盹模式
- java - 为什么 servlet 的 init() 方法在不同的线程中运行?