user.uid
仍然存在(借助此 uid != null
,我假设用户已登录)。
我也尝试了 addAuthStateListener(mAuthListener)
,但我仍然得到之前删除用户的 UID。
如果不使用被禁止或删除的用户 ID 的数据库跟踪,就可以立即删除该用户。
最佳答案
当用户登录 Firebase 时,他们会获得一个有效期为一小时的访问/ID token 。此 ID token 无法撤销,因为这需要 Firebase 对每次调用执行非常昂贵的检查。
因此,当您从控制台删除用户帐户时,他们可能会保留访问权限长达一小时,此时他们将需要刷新其 token ,这将失败(因为您删除了他们的帐户)。所以他们的访问权限会在一小时内自动消失。
几点:
- 如果您想在用户的 ID token 过期之前将其锁定在应用之外,您需要在某处保留一份额外的禁用 UID 列表。例如,如果您使用的是 Firebase 数据库,则可以保留
bannedUIDs
的全局列表,并将 UID 添加到其中。然后在您的服务器端安全规则中,您可以检查尝试访问数据库的 UID 是否未被禁止。 - 如果您删除用户的帐户,他们只需重新注册并创建一个新帐户即可。出于这个原因,通常最好禁用他们的帐户,这样做的效果相同(他们将无法在当前 ID token 过期后获得新的 ID token ),但会阻止他们使用相同的凭据再次注册。<
另见:
- 视频 Five tips to secure your app
- User keeps login even if I delete the account
- Why firebase user still signed in after I deleted it from firebase dashboard
- Does deleting account from Firebase automatically logs user out?
- User authentication persisted after having cancelled the user from console.firebase.google.com
- Firebase user deleted but still logged in on device
关于android - 从 Firebase 控制台中删除 Firebase 用户时(用户登录后),它不会反射(reflect)在应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54956709/