ExpressJS和Firebase Auth,初学者查询



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

我的问题是,Firebase 身份验证似乎只是客户端,后端不知道客户端是否已登录...... 如果客户端未登录,我想限制呈现给客户端的 HTML,但我无法弄清楚如何检查他是否已登录

我知道我可以使用

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

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

在Firebase文档中,我发现了有关验证ID令牌的内容 但我不明白首先我将如何将令牌发送到 ExpressJS,其次,在向路由发出请求之前我将如何发送它......

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

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

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

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

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

最新更新