2017-10-22 85 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