Firebase 域和子域之间的身份验证共享

Idu*_*ool 6 firebase firebase-authentication flutter-web

我有两个使用Flutter创建的网站。

一个网站部署在主域上,另一个网站部署在已部署第一个站点的主域的子域上。

两个网站都使用相同的 Firebase 项目,因此两者的身份验证详细信息和用户群相同。

我想要实现的是,当用户登录一个网站时,他不需要登录另一个网站。另一个网站只是将其检测为已登录的用户。这是一种单一标志。

我浏览了 firebase 文档,但没有得到任何有关如何实现它的指导。这custom token可能是实现它的一种方法,但我担心它会使身份验证变得复杂。

任何指示或指导将不胜感激。

Dha*_*raj 2

最简单的方法是使用Firebase Session Cookies。当用户登录时,调用Cloud Function(或您的服务器)并使用Admin SDK使用方法生成会话 cookie createSessionCookie()。然后您可以设置 cookie .domain.tld,并且可以从您的所有子域访问 cookie。

但是,这意味着您可能必须通过云功能或服务器来处理您的所有请求,因为您无法使用 Firebase 安全规则(除非用户仍使用 Firebase SDK 登录)以及会话 cookie。在提供资源之前,必须在服务器端验证 cookie。

一种解决方法是检查用户是否通过 Firebase SDK 登录子域。session如果不存在,则检查用户首次登录根域时添加的 cookie是否存在。如果 cookie 存在,则生成自定义令牌并使用自定义令牌通过 Firebase SDK 登录用户,如果不存在,则将用户重定向到登录页面。