我能';t在firebase控制台的规则中获取已登录的用户uid

我能';t在firebase控制台的规则中获取已登录的用户uid,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,这是我的数据 “用户”:{ “用户1”:{ "1234": { “角色”:“管理员” }, "1235": { “角色”:“正常” } }, “用户2”:{ "1236": { “角色”:“管理员” }, "1237": { “角色”:“正常” } } } 这里有一些规则 “规则”{ “用户”:{ .read:“root.child('users').child('user1').child(auth.uid).child('role')='admin'” } } 但这条规则不起作用。我似乎

这是我的数据

“用户”:{
“用户1”:{
"1234": {
“角色”:“管理员”
},
"1235": {
“角色”:“正常”
}
},
“用户2”:{
"1236": {
“角色”:“管理员”
},
"1237": {
“角色”:“正常”
}
}
}
这里有一些规则

“规则”{
“用户”:{
.read:“root.child('users').child('user1').child(auth.uid).child('role')='admin'”
}
}
但这条规则不起作用。我似乎无法正确获取auth.uid。

请尝试以下操作:-

{
  "rules": {
    "users": {
      "user1": {
      "$user_id": {
           ".read": "$user_id === auth.uid && root.child('users/user1/' + $user_id + '/role/').val() === 'admin' "
        }
      }
    }
  }
}

你想做什么?正如你所看到的,在用户中有两种类型,比如user1和user2。每个用户类型的管理员都可以编辑其用户角色。和12341235。。。是注册时获得的用户ID。请尝试在
.child('role')
之后添加
.val()
。是的,我在上面的帖子中遗漏了.val()。“规则”:{“用户”:{.read”:“root.child('users').child('user1').child('1234').child('role').val()==='admin'}}当我在规则之上运行时,它会工作。但是如果我使用auth.uid而不是“1234”,那么它就不起作用了。我觉得auth.id现在不能正常工作。如何登录当前用户id。是的,这些id是字母数字字符串。为了安全起见,我写了上面的ID。好的,我知道了。实际上,它们是字母数字的,就像你不想在这里显示那些id一样。正确的!是的,我检查过了。但是我需要获取user1和user2类型的所有用户。如果我使用你的代码,那么我有一些问题。在root/users中,我有一个权限被拒绝的错误。然后,我认为您应该在users之后直接以userid开始,不包括user1和user2。这可能会解决你的问题。因为一个用户可以有两个不同的id,就像你为user1-1234和1235做的一样,谢谢!!!