auth.uid无法在firebase规则中使用

时间:2017-05-01 14:34:53

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

我正在尝试向我的firebase应用程序添加安全规则。但auth.uid无效..

这是我的两个安全规则..

  "groups": {
      "$groupid":{
          ".read" : true,
          ".write" : "root.child('groupmembers').child($groupid).child('admins').child(root.child('users').child(auth.uid).child('username').val()).val()==true"
      }

    },
    "groupchat":{
      "$chatid":{

          ".read" : "root.child('groupmembers').child($chatid).child('members').child(root.child('users').child(auth.uid).child('username').val()).val()==true",
          ".write" : "root.child('groupmembers').child($chatid).child('members').child(root.child('users').child(auth.uid).child('username').val()).val()==true"

    }

  }

在第一条规则中,auth.uid正在运行..但是如果是第二条并且休息其他规则,则auth.uid根本不起作用。我添加了原始的uid代替auth.uid,所有规则都正常工作。

客户端操作示例..

 Map<String, Object> map = new HashMap<String, Object>();
 map.put("username", userid);
 map.put("message", userid + " Created This Group.");
 map.put("timestamp", ServerValue.TIMESTAMP);
 map.put("zcode",chat_key);
 map.put("type", "action");
 FirebaseDatabase.getInstance().getReference()
    .child('groupchat')
    .child(groupid)
    .push()
    .updateChildren(map);

用户结构

"users":{
  "my_uid" : {
    "email" : "example@gmail.com",
    "username" : "user1"
  }
}

groupmembers结构

"groupmembers":{
  "groupid":{
    {
      "admins" : {
        "user1" : true,
        "user3" : true
      },
      "members" : {
        "user1" : true,
        "user2" : true,
        "user3" : true,
        "user4" : true
      }
    }
}
}

那么我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

我认为这是因为版本不匹配或用于它的不同包所以它不能 auth.uid