我正在开发一个应用程序,每个用户必须首先登录,然后他们才能添加一些对象。他们创建的每个对象都将保存在firebase上。但我想分开用户的对象!例如,如果用户A保存X,用户B保存Y,则它们只能访问其对象(用户A必须只能访问X),但我不知道为什么有人添加任何其他内容可以访问它!有什么主意吗?
答案 0 :(得分:1)
为了达到您的标准,请将子属性添加到名为“用户(添加该对象的用户)”的对象节点,然后可以在进行过滤的同时以这种方式请求数据:
DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference("Object");
Query query = mDatabaseReference.orderByChild("user").equalTo("the_user_name").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot datas: dataSnapshot.getChildren()){
//here you get your object data
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:1)
如果您要确保用户只能访问自己的数据,请查看Firestore或Realtime Database的Firebase服务器端安全性。这些使您可以通过指定在服务器上强制执行的规则来确定每个用户可以访问哪些数据,以使它们不会被任何恶意客户端绕过。