Firebase 实时数据库身份验证

标签 firebase firebase-realtime-database firebase-authentication

我想使用 Firebase 实时数据库。我已经创建了我想要的数据结构。您有成员、房间以及它们之间的关系。房间里的每个人都可以互相“交谈”。

json数据结构:

{
  members : {
    "223dfa323" : {
      name : "Test member",
      os : "IOS",
      date_registered : "2017-02-02",
      enabled : true

    },
    "ddfa33434" : {
      name : "Test member 2",
      os : "Android",
      date_registered : "2017-02-03",
      enabled : true
    },
    "3434" : {
      name : "Test member 3",
      os : "Android",
      date_registered : "2017-02-03",
      enabled : true
    }

  },

  rooms : {
    "1234" : {
      name : "Room 1",
      date_created : "2017-02-02",
      enabled : true

    },
    "2312" : {
      name : "Room 2",
      date_registered : "2017-02-03",
      enabled : true
    }
  },

  roommembers : {
    "1234" : {
      members : {
        "223dfa323" : true,
        "ddfa33434" : true
      }
    }
  }
}

但是我怎样才能防止其他人访问该数据呢?我怎样才能让成员(member)访问自己的数据?例如,成员(member) 3434 无法访问 1234 号房间,因为它没有与其关联。

其他设备可以访问该数据。

如何在 Firebase 中执行此操作?

最佳答案

您可以使用 firebase 的 security rules 。对于您的情况,这些可能是:

"rules": {
    "rooms": {
        "$roomID": {
            ".read": .read": "root.child('roommembers/'+$roomID+'/members/'+auth.uid).exists()"
        }
    }
}

关于Firebase 实时数据库身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45220756/

相关文章:

android - com.firebase.ui.auth.FirebaseUiException : Error when saving credential

ios - 将 tableview 单元格的 firebase 数据检索到 View Controller 的标签

java - 如何再次从 firebase 数据库中请求数据?

android - 想在从 firebase 检索数据时对列表进行限制

android - 如何从firebase实时数据库中删除?

ios - 使用 Firebase 进行身份验证自动登录

ios - 带有 brozot/Laravel-FCM 的 laravel fcm 推送通知不适用于 ios,但在 android 上运行良好

javascript - 有没有办法在创建 Firebase 云函数的同一文件中调用非云函数?

java - 创建实现 Serialized/Parcelable 的 Firebase POJO 类

javascript - 在 NodeJS 中的单个函数中传递回调两次