【问题标题】:Deleted Firebase User still can authenticate已删除的 Firebase 用户仍然可以进行身份​​验证
【发布时间】:2019-09-14 19:51:47
【问题描述】:

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

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 上的 Auth Users 中删除用户时,用户仍然存在?

【问题讨论】:

标签: firebase flutter firebase-authentication


【解决方案1】:

您在重新安装应用后等了多长时间?如果您在卸载该应用后不久重新安装,这是 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

【讨论】:

  • 我明天再试一次。谢谢!
猜你喜欢
  • 2019-07-20
  • 1970-01-01
  • 2018-01-11
  • 2021-03-18
  • 2021-02-28
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多