Firebase规则:禁用用户名写入

时间:2017-02-09 14:27:01

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

我使用Firebase创建了一个聊天应用,有时聊天用户充斥着冠军,我想阻止他。

我创建了我的块方法来设置以下内容:

chat_blocks/USERNAME_TO_BLOCK:true

和我的规则:

".write": "!root.child('chat_blocks/'+newData.child('username').val()).exists()"

但它阻止了所有人。

我的结构很简单:

chat_messages
-$key 
-- username
-- message

chat_messages/--list of messages

1 个答案:

答案 0 :(得分:0)

我做了一些挖掘并找到了两个解决方案。

<强> 1。设置禁止用户

考虑在bannedFor树下添加users节点。然后,您只需转到users节点,确保该信息不存在,并授予他们访问.read.write

的权限
users
  $uid
    "bannedUntil": 1486599300

现在谈到你的规则,它看起来像这样

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "!data.child('bannedUntil').exists() || data.child('bannedUntil').val() < now"
      }
    }
  }
}

<强> 2。设置邮件费率

限制用户在特定时间段内可以发送的邮件数量。我为此解决方案找到了jsfiddle以及rules

  

每隔5,000毫秒将消息限制为不超过一个

PS:我知道这不一定能解决您当前的问题,但它提供了替代解决方案。