0

enter image description here訪問數據只有當用戶autheticated

我的火力點數據看起來是這樣的。我要訪問我可以訪問的salon-> 1數據 -

databaseReference = mDatabase.child("salon").child("1").child("franchises"); 
    databaseReference.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
     } 
    }); 

但是,在這種情況下,數據是不安全的礁體可以準備好寫數據,所以我嘗試添加一條規則這樣的 -

{ 
"rules": { 
    "users": { 
    "$uid": { 
     ".write": "$uid === auth.uid", 
     ".read": "$uid === auth.uid" 
    } 
    } 
    } 
} 

但現在我越來越permission denied android系統中,當我試圖訪問數據。我做錯了什麼?

回答

1

沒有指定任何內容時的默認行爲是不允許用戶讀取數據。您沒有在salon上設置任何權限,因此Firebase拒絕讀取。

要授予讀取權限,您還必須指定誰可以讀取salon節點下的數據。例如,允許用戶閱讀所有沙龍數據:

{ 
    "rules": { 
    "salon": { 
     ".read": "auth != null" 
    } 
    }, 
    "users": { 
     "$uid": { 
     ".write": "$uid === auth.uid", 
     ".read": "$uid === auth.uid" 
     } 
    } 
    } 
} 
+0

好的,如果我需要通過身份驗證後獲得的uid,那麼調用特許經營權怎麼辦? – Anirban

+0

像這樣 - databaseReference = mDatabase.child(「salon」)。child(「1」)。child(「franchises /」+ uid); – Anirban

+0

啊...沙龍的每個用戶都是?這並不明確。我已經更新了我的答案。請注意,在數據庫中以純文本格式存儲密碼是一種非常糟糕的做法,所以我希望這些值是[鹽漬哈希](https://en.wikipedia.org/wiki/Salt_(cryptography))。 –