栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从console.firebase.google.com取消用户后,用户身份验证仍然存在

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从console.firebase.google.com取消用户后,用户身份验证仍然存在

如果您的用户已登录,则在您的应用程序中,并且您正在从Firebase控制台中手动删除它,该用户将保持活动状态,直到刷新令牌为止。因此,最多大约一个小时,用户将保持身份验证。因此,如果您想立即限制用户的访问权限,则需要注销该用户。

但是还有另一种解决方法,您可以在Firebase数据库中创建一个名为的新节点,然后在其中

usersToLogOut
添加所有用户ID
keys
和将布尔值
true
作为值。数据库应如下所示:

Firebase-root     |     --- usersToLogOut  |  --- uid1: true  |  --- uid2: true

下一步,当您手动删除该帐户时,需要在该节点下添加用户的uid。您还需要使用Firebase安全规则来撤消未经授权的用户的访问。规则应如下所示:

{  "rules": {    "usersToLogOut": {      ".read": true,      ".write": false    },    "posts": {      ".read": "auth != null && !root.child('usersToLogOut').child(auth.uid).exists()"    }  }}

编辑1:

根据您的编辑,您说:

what I'm asking here is not how to secure my DB from him/her but Ito check that It has beendeleted
但这是使用上述规则的一种更简单的方法来实现此目标。如果您从控制台手动删除用户,这并不意味着您要删除所有内容,包括数据库记录。您需要自己做。因此,最简单的方法是使用规则。

此外,如果删除所有用户记录,则可以添加一个侦听器并强制其注销,但这意味着您需要在数据库中搜索所有记录并相应地删除它们。第一种解决方案比较容易,因为您只需要在数据库中添加一条记录即可。

编辑2:

当您手动删除用户时,这并不意味着该

firebaseUser
对象将是
null
,因此检查是否为空没有任何意义,因为在下一次令牌刷新之前,用户仍将通过身份验证。因此,要解决此问题,您需要使用Firebase规则来限制访问。

因此,您的代码将始终有效。我要说的是,在您从控制台中手动删除用户的时间到您刷新令牌的时间之间,最多可能需要一个小时,用户仍然可以访问您的应用,即使他被删除了。要停止此操作,请在该小时内使用上述解决方案。

根据OP的评论编辑:

您的代码可以正常工作,并且始终可以工作,但是问题是,即使您从控制台删除用户,在下一次刷新令牌之前,他仍将具有数据库访问权限。是的,用户将能够访问数据库。该令牌的有效期约为一个小时,如果您不希望使用该令牌,则可以限制使用安全规则,并且在该小时内该用户不再具有访问权限。

换句话说,如果您也从客户端将其删除,并且它是无效的,并且如果其他人已经“被盗”,则该令牌可以使用它来访问数据库。不是正在使用您的应用的用户,而是可能会窃取该令牌的用户。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号