当前位置: 首页 > 知识库问答 >
问题:

用于认证用户的firebase实时数据库规则

法子昂
2023-03-14
{
  "User Information" : {
    "47NiYA7rGNa8nJvlnnxzpxhqvCl2" : {
      "-LYuXT8d5Hzm4Sp_7buK" : {
        "deceasedName" : "You",
        "deceasedRelative" : "Are",
        "noLot" : "34",
        "relativeAddress" : "Main Road",
        "relativeContact" : "0231456789"
      }
    },
    "LV4y2BXnNWWkJix6YwTRJV8LdQs2" : {
      "-LYufF_KMO1o7EULIK8Y" : {
        "deceasedName" : "amir",
        "deceasedRelative" : "loqman",
        "noLot" : "104",
        "relativeAddress" : "aman",
        "relativeContact" : "123456"
      }
    }
  }
}
 databaseReference = FirebaseDatabase.getInstance().getReference("User Information");
    FirebaseUser user = firebaseAuth.getCurrentUser();
    String UserID = user.getUid();
    databaseReference.child(UserID).addListenerForSingleValueEvent(new ValueEventListener() { {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot INFOSnapshot : dataSnapshot.getChildren()){
                UserInformation  userInfo = INFOSnapshot.getValue(UserInformation.class);
                infoList.add(userInfo);
            }
            UserInfoAdapter userInfoAdapter = new UserInfoAdapter(InfoDisplayActivity.this, infoList);
            listViewINFO.setAdapter(userInfoAdapter);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

我使用这个firebase规则:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

那么我需要更改firebase规则或更改编码吗?

共有1个答案

晏阳飙
2023-03-14

对于写作部分,我建议你把你的规则改成:

{
  "rules": {
    ".write": "auth != null",
    "User Information": {
      "$user_id": {
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

使用此写入规则,每个用户只能写入自己的用户信息,但仍然能够读取数据库中的所有内容。有关用户安全的更多信息,我建议您阅读Firebase文档。

至于读取所有用户信息,您只需要删除代码中的.child(UserID)部分,如下所示:

databaseReference.addListenerForSingleValueEvent(new ValueEventListener() { {
 类似资料:
  • 我的Firebase实时数据库有以下规则: 适用于新用户的旧Firebase实时数据库规则: 使用电子邮件和密码进行Firebase身份验证: 用户类别: 这些规则适用于存量用户。但是如果我试图创建一个新用户,这些规则就不起作用了。我无法在数据库中为已经注册的新用户创建新数据。如何解决这个问题?

  • 我正在做一个我想在firebase实时数据库上运行的项目。我用以下格式创建了一个数据库设置: 我的安全规则如下所示: 我试图存档,每个人都可以阅读“马”、“图像”和“视频”中的详细信息,但只有经过身份验证的用户才能在“马”、“图像”和“视频”中添加自己的条目(由firebase auth提供的用户ID检查)。 我的第一个问题是:我应该把“图像”和“视频”作为“马”的子对象吗?如果我能为马写一条读写

  • 我有一个数据库: 当用户()在应用程序中注册时,他会填充另一个用户uid(该用户uid具有属性)并将自己的uid添加到他的个人资料中(

  • 我尝试用规则返回用户聊天列表。所以我不知道对话的id。我尝试了几种方法,但都不起作用,因为你必须知道聊天id。 数据库: 规则: 但当我从react本机应用程序访问时。通过身份验证的用户无法访问聊天记录(uid:3Oi1atf8l2P4Vgsb8tZOGxpUg7q2) *读取失败:错误:权限被拒绝/Chats:客户端没有访问所需数据的权限。 规则: 查询: