仅当用户通过身份验证时,才能从Android访问Firebase中的数据

时间:2016-12-24 12:34:29

标签: android firebase firebase-realtime-database firebase-authentication firebase-security

enter image description here

我的firebase数据如下所示。我想访问 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) {
        }
    });

但是在这种情况下数据不安全cay body可以准备写入数据,所以我尝试添加这样的规则 -

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

但是当我尝试访问数据时,我现在在android中获得permission denied。我做错了什么?

1 个答案:

答案 0 :(得分:1)

未指定任何内容时的默认行为是不允许用户读取数据。您未在salon上设置任何权限,因此Firebase会拒绝阅读。

要授予读取权限,您还必须指定谁可以读取salon节点下的数据。例如,允许用户阅读所有沙龙数据:

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