【问题标题】:How do you block users on Firebase?您如何在 Firebase 上阻止用户?
【发布时间】:2016-10-20 21:34:22
【问题描述】:

我正在为我的应用使用 Firebase,并且想知道如何阻止某些用户。我在控制台的 Auth 选项卡上看到,有“删除”和“禁用”选项。那些做什么?我一直无法找到有关这方面的文档。其中一个是否允许我阻止用户?

我所说的阻止用户的意思是".read": "auth != null"规则阻止他访问数据库上的数据

【问题讨论】:

  • 嘿@PhilipSopher,如果我的回答不清楚或者您还有其他问题,请告诉我。谢谢!
  • @adolfosrs 感谢您的回答。我有两个问题:1)blockedUsers 节点的外观如何?它是数组、字典等吗?你能提供一个代码示例吗? 2) disable 功能是否会对当前登录的用户进行身份验证?
  • 刚刚用第一个问题的附加信息更新了答案。关于第二个问题,这将取决于您是否经常在您的实施中重新验证用户身份。如果您想报道一个关键事件,您可以reauthenticate 处理它。否则你不会取消身份验证。

标签: firebase firebase-security firebase-authentication


【解决方案1】:

禁用 功能在于阻止该用户进行身份验证。因此,如果他尝试进行身份验证,他将失败并出现错误代码INVALID_CREDENTIALS,并且他将无法访问具有".read": "auth != null" 规则的数据。就像他被删除一样,但管理员仍然有权重新激活用户帐户。

如果您想构建一个能够进行身份验证但访问受限的“被阻止用户”列表,您可以将被阻止的 ID 存储在 Firebase 数据库中的一个节点中,例如 @987654323 @ 然后使用security and rules

".read": "auth != null && !root.child('blockedUsers').hasChild(auth.uid)"

blockedUsers 可能看起来像下面的树,但您也可以在 userId 下添加一些其他信息,例如该用户被阻止的日期。

/databaseRoot
    /blockedUsers
       userId1 : true
       userId2 : true

将用户添加到此列表将取决于您的需要。您可以通过访问 firebase 控制台并将用户 ID 添加到节点来手动执行此操作。或者,如果您想根据应用程序上的事件阻止用户,您可以简单地调用类似

ref.child('blockedUsers').child(userIdToBlock).set(true);

【讨论】:

  • 我正在寻找类似的东西。我什至不允许用户对我的应用程序进行身份验证。所以我想要一个用户的“白名单”,而所有其他人都不能访问该应用程序。我该怎么做?
猜你喜欢
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多