我正在尝试向我的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
}
}
}
}
那么我该如何解决这个问题呢?
答案 0 :(得分:0)
我认为这是因为版本不匹配或用于它的不同包所以它不能 auth.uid