从应用程序更改Firebase数据库规则

时间:2018-03-11 15:12:27

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

是否可以从我的应用程序更改Firebase数据库规则。 所以,我有一个带有photoURL和名字的用户。现在我想让用户选择,是否可以看到他的photoURL。或者只有他的联系人或没有人。我认为实现这一目标的最佳方法是更改​​规则,因此只有用户联系人才能读取保存photoURL的数据。 如果有可能......我怎样才能做到这一点。如果没有,还有另一种方法吗?

1 个答案:

答案 0 :(得分:2)

没有用于更改数据库安全规则的API。但您可以以允许用例的方式编写安全规则。例如。假设您将用户的联系人存储在数据库中的共享设置:

contacts: {
  user8633311: {
    user:209103: true,
    user1234567: true
  },
  user209103: {
    user8633311: true
  }
  user1234567: {
    user:209103: true
  }
},
sharing: {
  user8633311: true,
  user209103: false,
  user1234567: false
}

现在,您可以使用以下内容保护对用户photos节点的访问:

{
  "rules": {
    "photos": {
      "$uid": {
        ".read": "
          auth.uid == $uid || (
            root.child('contacts').child($uid).child(auth.uid).val() === true &&
            root.child('sharing').child($uid).val() === true
          )
        "
      }
    }
  }
}

使用这些规则,您可以允许用户控制共享,而无需不断重新部署安全规则。