如何访问Firebase的身份验证持久性管理器密钥?

lymnna71  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(130)

我正在使用Firebase重定向身份验证运行Web应用程序。
当用户返回到Web应用时,Web应用将在身份验证重定向挂起期间再次初始化。
这种状态可以在浏览器会话存储中看到,如下所示:

{firebase:pendingRedirect:AIzaSyCMM24e1XAkOQD-wo_TnoaFNXFzFk93sj8:[DEFAULT]: '"true"'}

我想用一种惯用的方式检索这个项目。现在我使用这个工具:

function getAuthRedirectIsPending() {
  for (let i = 0; i < sessionStorage.length; i++) {
    const key = sessionStorage.key(i)
    if (
      key?.startsWith('firebase:pendingRedirect') &&
      sessionStorage.getItem(key) === '"true"'
    ) {
      return true
    }
  }
  return false
}

但我也注意到这个键存在于firebase auth对象上,尽管无法访问:

{
    "persistenceManager": {
        ...
        "fullUserKey": "firebase:authUser:AIzaSyCMM24e1XAkOQD-wo_TnoaFNXFzFk93sj8:[DEFAULT]",
        "fullPersistenceKey": "firebase:persistence:AIzaSyCMM24e1XAkOQD-wo_TnoaFNXFzFk93sj8:[DEFAULT]"
}

我想知道是否有一种方法可以从Firebase中检索持久性重定向键名称,然后使用它来访问窗口会话存储?

7cwmlq89

7cwmlq891#

Firebase身份验证持久性管理器使用Web存储API存储用户身份验证令牌。Web存储API是一个简单的键-值存储系统,提供两种类型的存储机制:会话存储和本地存储。
会话存储是一种临时存储机制,当用户关闭浏览器窗口或选项卡时,会话存储将被清除,而本地存储甚至在用户关闭浏览器窗口或选项卡之后仍将继续存在。
Firebase Authentication Persistence Manager将用户身份验证令牌存储在本地存储器中,并且可以通过浏览器的开发人员控制台访问本地存储器的密钥。
要访问Firebase身份验证持久性管理器密钥,请执行以下步骤:
在浏览器中打开Web应用程序并导航到身份验证页面。
通过按F12或右键单击页面并选择“检查”打开浏览器的开发者控制台。
在开发人员控制台中,选择“应用程序”选项卡。
在“应用程序”选项卡中,展开“本地存储”选项。
查找Firebase身份验证持久性管理器密钥。这些密钥的名称为“firebase:authUser”,后跟Firebase项目ID。
单击该键以查看存储的值,其中将包括用户的身份验证令牌。
注:在大多数情况下,可能不需要访问用户身份验证令牌,因为Firebase身份验证提供了无需直接访问身份验证令牌即可管理用户身份验证状态的方法。此外,操作身份验证令牌可能很危险,并可能危及应用程序的安全性。

相关问题