Firebase-自动注销用户onDisconnect

时间:2018-07-26 22:15:16

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

由于我已经注意到,一旦用户使用电子邮件和密码登录,重新打开应用程序时会话就不会过期并且不需要新的身份验证,因此我希望避免这种情况。

我想在触发.signOut()时自动.onDisconnect个用户。我该如何实现?我尝试使用以下代码,但未成功:

firebase.auth().onDisconnect().signOut();

2 个答案:

答案 0 :(得分:3)

当您说“ onDisconnect”时,我假设您的意思是实时数据库onDisconnect触发器。

关于onDisconnect的第一件事是,它在Realtime Database和客户端应用程序之间的套接字连接关闭时触发。发生这种情况的原因可能有多种,即使该应用似乎具有良好的互联网连接,也可能会在任何时间发生。因此,请注意您要在这里做什么。

此外,onDisconnect触发器只能直接影响数据库中的数据,而没有其他影响。因此,这限制了您可以有效完成的工作。您无法在客户端应用中执行任何操作来响应onDisconnect。

在这两个事实之间,您试图做的事情实际上是不可能的,,我认为这不是可取的。您可能只是因为他们的火车暂时进入地下,或者他们只是退出应用程序一段时间而退出用户。这将给用户带来极大的不便。

如果您想自动注销用户,我强烈建议您找到其他方法来执行此操作,例如编写一些代码以记住用户自使用您的应用以来已经过了多长时间,并强制退出基于您喜欢的逻辑的客户端应用。

答案 1 :(得分:2)

onDisconnect()与数据库连接有关,与您的已认证用户无关。就像这样:onDisconnect()可能会在您的用户登录时触发,仅仅是因为与数据库的连接暂时断开。

但更重要的是:一旦服务器检测到客户端消失,onDisconnect处理程序就会在服务器端运行。这是因为如果断开连接肮脏(例如,应用程序崩溃),客户端将无法再检测到此情况。

您最可能需要的方法是在用户关闭应用程序时将其注销。

或者,您可能希望将侦听器附加到客户端中的.info/connected。这是一个客户端侦听器,当 client 检测到连接或断开连接时会触发。