Firebase规则 - 阻止用户

时间:2018-03-06 17:19:58

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

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

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

my structure

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以use your login system with Firebase验证。您只需在服务器(或云功能)上使用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()"
            }
        }
    }
}