ExpressJS 和 Firebase Auth,初学者查询

ExpressJS and Firebase Auth, beginner queries

我正在尝试学习 ExpressJS,所以我创建了一个具有登录功能的简单网站... 我想将 Firebase 用于帐户和数据库 (Firestore)

我的问题是,Firebase Auth 似乎只是客户端,后端不知道客户端是否已登录... 如果他没有登录,我想限制呈现给客户端的HTML,但我不知道如何检查他是否登录

我知道我可以使用

firebase.auth().onAuthStateChanged(function(user){
  if (!user){
    window.location.replace("/login");
}});

在客户端,这对我来说看起来 "Secured" 不够,我想在 ExpressJS 中做到这一点

在 firebase 文档中我发现了关于 Verifying ID Tokens 但我首先不明白如何将令牌发送到 ExpressJS,其次,在对路由发出请求之前我将如何发送它...

您必须将 ID 令牌传递给您的后端。然后,您按照 https://firebase.google.com/docs/auth/admin/verify-id-tokens#retrieve_id_tokens_on_clients 中的说明验证 ID 令牌。

如果每次发送请求时您的应用程序都是单页应用程序,则在请求中传递 ID 令牌 header。

如果您正在构建更传统的网络应用程序,您可以通过 cookie 设置 ID 令牌并检索它并在每个请求时在您的后端签入。您必须执行以下操作:

  1. 在令牌过期前通过调用getIdToken(true)主动刷新 ID 令牌。令牌通常持续一个小时。您需要在到期前刷新它并更新 cookie,以便重定向仍会考虑用户登录。

  2. 如果用户在一段时间后(超过一个小时)访问您的网站,cookie 将过期,您将重定向到您设置 onAuthStateChanged 的临时页面,如果用户已登录,调用 getIdToken(),更新 cookie 并重定向到预期目的地,否则认为用户已注销。