删除的Firebase用户仍然可以进行身份​​验证

时间:2019-09-14 19:51:47

标签: firebase flutter firebase-authentication

我已经手动删除了Firebase User,然后从设备(物理iPhone)中删除了该应用程序,然后在我安装它时,它通过了auth检查,并打印了删除的用户电子邮件和所有内容。 这是我用来检查用户是否存在的方法

home: FutureBuilder<FirebaseUser>(future: Provider.of<AuthService>(context).getUser(),
      builder: (context, AsyncSnapshot<FirebaseUser> snapshot) {
    if (snapshot.connectionState == ConnectionState.done) {
    if (snapshot.error != null) {
    print('error');
    return Text(snapshot.error.toString());
    }
    user = snapshot.data;
    print(user.email);
    return snapshot.hasData ? HomeScreen(user, pos) : LoginScreen();
    } else {
    return LoadingCircle();
    }
    },
      )

这怎么可能?任何人都可以解释一下,当我从Firebase上的“身份验证用户”中删除用户时,为什么该用户仍然存在吗?

1 个答案:

答案 0 :(得分:3)

重新安装应用程序后,您等待了多长时间?如果您在卸载应用后不久重新安装了该应用,则这是iOS上的预期行为。

这样做的原因有很多,所以我将在下面列出Firebase身份验证的方式:

  1. Firebase身份验证使用两个令牌对用户进行身份验证,即长寿命的刷新令牌和短寿命的ID令牌。

  2. 该ID令牌自铸造后的一小时内有效。铸造后, ID令牌就无法撤消,这就是为什么Firebase不必在每次交互时都进行昂贵的额外检查。

  3. ID令牌保留在设备上,因此只要令牌没有过期,重新启动应用程序即可快速获取用户的身份验证状态。

  4. 在iOS上,ID令牌存储在用户的钥匙串中,当您删除应用程序时,该令牌不会自动删除。参见Firebase - Deleting and reinstalling app does not un-authenticate a user

再等待一个小时左右,您应该会看到该用户不再通过身份验证。或者,不要删除用户帐户,而是在您正在使用的后端服务的Firebase身份验证中将其禁用。有关此示例,请参见Firebase still retrieving authData after deletionfive tips to secure your app