2017-10-22 121 views
0

我正在写一个火力地堡的规则,以允许用户访问用户B的“测试”属性:火力地堡规则获取目标用户的UID

"Test": { 
    ".read":"root.child('Users').child(auth.uid).child('Test').child('subtest').val().contains('xxxxxxxxxxxxxxxxMdv3wQRjIs2')", 
} 

就想通了,请求者的规则检查(用户)不是目标用户b(可能是错误:))。

有没有什么办法可以编写规则来表示请求者的'auth.uid'等目标用户的uid?

还是可以在目标用户级别执行任何操作?

回答

0

这是你希望做什么?

"$target":{ 
     ".write": "root.child('path').val() == 'Value'" 
     } 

"Users": { //Path to where you store your users (case sensitive) 
     "$uid": { 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
     } 
    } 

编辑:OP发现使用".read": "data.child('allowed').val() == auth.uid",

+0

谢谢Torewin,如果我错了,请纠正我。由于所有用户都将在Firebase中共享相同的规则树,如果用户A请求访问用户B的$ uid,并且由于Firebase规则将检查用户A的$ uid级别(auth.uid用于用户A)的权限,我们如何检查用户A是否被允许访问用户B的$ uid? – chdsl007

+0

或者说这样,由于我们无法直接在规则中添加uid,我们如何使用Firebase规则来表示用户B的uid?因此,当我们说,当用户A试图访问用户B的用户ID时,用户A的用户B的用户名列出了另一个属性,该规则如何动态地反映用户B的用户ID(或新用户C的用户ID)? – chdsl007

+0

你想让userA访问userB吗? – Torewin

0

这应该让你的用户的UID:

let userID = FIRAuth.auth()!.currentUser!.uid 
+0

由于米尔扎的解决方案,但这是代码来获取当前用户/请求者的UID,而不是目标用户。并且我想在Firebase中编写规则以使用'$ target'之类的东西来获取目标用户的uid,只是不确定应该是什么确切的参数/代码 – chdsl007