【问题标题】:Firebase Rule - Block userFirebase 规则 - 阻止用户
【发布时间】:2018-03-06 17:19:58
【问题描述】:

我正在将 firebase 用于聊天应用程序,我想通过用户名(不是 firebase auth 的 uid)阻止一些用户。

可以对 .write 制定一些规则以匹配用户名并避免插入吗?

谢谢!

【问题讨论】:

  • 如果您可以发布您的数据库结构(特别是存储这些用户名的部分)和您当前的规则,那将会很有用。
  • @RosárioPereiraFernandes 完成!谢谢。
  • 想要“阻止”吗?你想阻止他们访问数据库吗?
  • @RosárioPereiraFernandes 阻止写作
  • 您是否有任何具体原因不想为此使用 Firebase 身份验证?

标签: firebase firebase-realtime-database firebase-security


【解决方案1】:

您可以use your login system with Firebase 验证。您只需在您的服务器(或 Cloud Functions)上将 Custom Tokens 与 Firebase Admin SDK 一起使用。我强烈推荐这个,因为它可以很容易地为您的数据库设置简单的规则。

现在,如果您不打算这样做,可以使用一种昂贵的解决方法,但它不推荐

您可以创建一个包含所有被阻止用户的新节点:

{
    "blocked":{
        "username1":true,
        "username2":true,
        "username4":true,
        "username5":true,
        "username7":true
    }
}

然后,当您将数据写入数据库时​​,再添加一个字段,其中包含当前正在写入数据库的用户的用户名。我看到你的聊天节点已经有了这个字段,但是如果你有更多的节点,你可能也想在那里添加这个字段。

你的数据库规则是这样的:

{
    "rules":{
        "chats":{
            "$chatId":{
                ".read":true,
                ".write":"root.child('blocked').child(newData.val().user).exists()"
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2018-12-08
    • 1970-01-01
    • 2018-11-26
    相关资源
    最近更新 更多