首页 > 解决方案 > Firebase 身份验证在 1 小时后过期

问题描述

我能够允许用户使用电子邮件和密码登录 Firebase。我按照以下说明操作:https ://firebase.google.com/docs/reference/rest/auth/#section-sign-in-email-password

但是,1 小时后,授权似乎过期了,我不能再使用我的应用程序了。有人知道我如何延长那个时间吗?我已经阅读了多个问题非常相似的帖子,但我找不到明确的答案。IT 似乎有些人认为有办法获得 reauth 令牌或类似的东西,但仍然没有明确的答案。

标签: firebasefirebase-authentication

解决方案


管理用户会话

Firebase 身份验证会话是长期存在的。每次用户登录时,用户凭据都会发送到 Firebase 身份验证后端,并交换为 Firebase ID 令牌 (JWT) 和刷新令牌。Firebase ID 令牌是短暂的,持续一个小时;刷新令牌可用于检索新的 ID 令牌。刷新令牌仅在发生以下情况之一时过期:

  • 用户被删除
  • 用户被禁用
  • 检测到用户的主要帐户更改。这包括密码或电子邮件地址更新等事件。

在 Web 客户端上管理令牌

网站客户端代码可以调用User.getIdToken(forceRefresh?: boolean )

如果尚未过期,则返回当前令牌。否则,这将刷新令牌并返回一个新令牌。

每次将令牌发送到服务器时都需要调用它。


或者,可以通过会话 cookie 管理用户会话。

管理会话 Cookie

Firebase Auth 为依赖会话 cookie 的传统网站提供服务器端会话 cookie 管理。与客户端的短期 ID 令牌相比,此解决方案有几个优点,每次都可能需要重定向机制来更新会话 cookie 过期:

  • 通过只能使用授权服务帐户生成的基于 JWT 的会话令牌提高了安全性。
  • 具有使用 JWT 进行身份验证的所有好处的无状态会话 cookie。会话 cookie 具有与 ID 令牌相同的声明(包括自定义声明),从而可以对会话 cookie 执行相同的权限检查。
  • 能够创建自定义过期时间从 5 分钟到 2 周不等的会话 cookie。
  • 根据应用程序要求灵活地实施 cookie 策略:域、路径、安全httpOnly等。
  • 当怀疑令牌被盗时,能够使用现有的刷新令牌撤销 API 撤销会话 cookie。
    • 能够检测重大帐户更改的会话撤销。

推荐阅读