域和子域之间的 Firebase 身份验证共享
Posted
技术标签:
【中文标题】域和子域之间的 Firebase 身份验证共享【英文标题】:Firebase Authentication sharing between domain and subdomain 【发布时间】:2021-11-19 07:17:16 【问题描述】:我有两个使用 Flutter 创建的网站。
一个网站部署在主域上,另一个网站部署在已经部署了第一个站点的主域的子域上。
两个网站都使用相同的 Firebase 项目,因此,两者的身份验证详细信息和用户群相同。
我想要实现的是当用户登录一个网站时,他不需要登录另一个网站。另一个网站只是将其检测为已登录的用户。这是一种单一的符号。
我浏览了 firebase 文档,但没有获得有关如何实现它的任何指导。 custom token
可能是实现它的一种方法,但我担心它会使身份验证变得复杂。
任何指针或指导将不胜感激。
【问题讨论】:
刚刚找到这个参考:dev.to/johncarroll/… 检查我是否能得到一些指导。 【参考方案1】:最简单的方法是使用Firebase Session Cookies。当用户登录时,调用Cloud Function(或您的服务器)并使用Admin SDK 使用createSessionCookie()
方法生成会话cookie。然后您可以在.domain.tld
上设置cookie,并且可以从您的所有子域访问该cookie。
但是,这意味着您可能必须通过云函数或服务器来处理您的所有请求,因为您无法将 Firebase 安全规则(除非用户仍使用 Firebase SDK 登录)与会话 cookie 一起使用。在提供资源之前,必须在服务器端验证 cookie。
一种解决方法是检查用户是否通过 Firebase SDK 登录子域。如果没有,则检查用户首次登录根域时添加的 session
cookie 是否存在。如果 cookie 存在,则生成自定义令牌并使用自定义令牌通过 Firebase SDK 登录用户,否则将用户重定向到登录页面。
【讨论】:
以上是关于域和子域之间的 Firebase 身份验证共享的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法让一个人在跨子域的 firebase 上进行身份验证
可以在firebase中的ios和android项目之间共享用户进行身份验证