刷新令牌后是否需要再次调用firebase.database.on()?

时间:2020-09-12 21:42:52

标签: reactjs firebase firebase-realtime-database firebase-authentication

我的应用程序遇到了这个问题,该应用程序最终(不确定时间范围,大概是1个小时)将停止使用Firebase实时数据库更改进行实时更新,而无需注销和重新登录。安全规则可防止未经授权的用户访问数据。用户将保持登录状态,并且身份验证会话仍然存在,因此我对为什么最终停止更新感到困惑。

经过一番痛苦的互联网搜寻之后,我发现登录时给出的令牌ID仅持续1个小时,这时将使用刷新令牌自动刷新它们。 (为了记录,我使用firebase.auth().signInWithEmailAndPassword登录)。

现在,我的问题-刷新令牌ID后是否需要重新订阅数据库?更具体地说,在检测到令牌刷新时,我需要先调用firebase.database().ref().off(),然后再调用firebase.database().ref().on()吗?如果没有,您能否指出我可能出了什么问题?

编辑:还可能值得注意的是,如果我更改安全规则以允许未经身份验证的读取,则用户仍可以无限期地写入数据库而无需重新进行身份验证。

1 个答案:

答案 0 :(得分:1)

Firebase自动将新的身份验证令牌传递到数据库。只要用户保持不变,就不需要重新附加侦听器。

您可能唯一需要重新连接的时间就是用户是否以某种方式退出。当无法刷新ID令牌时,例如由于帐户已被禁用或密码已更改,可能会发生这种情况。在这种情况下,将取消现有的侦听器,并将其记录在客户端中,并将调用on的(可选)错误回调。此时,您需要重新认证并附加新的侦听器。