更改规则后无法写入Firebase

时间:2016-12-24 06:33:26

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

使用默认规则写入我的实时数据库:

{
"rules": {
".read": "true",
".write": "true"
}
}

我能够成功将数据保存到数据库中:

enter image description here

我的Android应用中的代码如下所示:

  DatabaseReference mDatabaseReference;
  mDatabaseReference = DatabaseReference.getInstance().getReference();
  ...
  mDatabaseReference.child("user").child(user.getUid()).setValue(user);

但是为了允许已登录的用户(电子邮件和密码验证)仅访问他们自己的数据,我发现了Firebase - How to write/read data per user after authentication。答案使用了我无法在任何地方找到的课程Firebase。所以我把规则改为:

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

对我的java代码进行了一些修改:

    DatabaseReference mDatabaseReference, databaseReference;
    ...
    mDatabaseReference = FirebaseDatabase.getInstance().getReference();
    databaseReference = mDatabaseReference.child("user");

    ...
    databaseReference.setValue(user); //user is a POJO

删除我的数据库中的旧条目并重新运行我的应用程序后,当我尝试保存新用户时没有任何反应。我错过了什么?

1 个答案:

答案 0 :(得分:4)

在您的规则中,将users更改为user

Firebase规则中的子项名称

enter image description here

必须与java代码中子项的名称匹配。

enter image description here

为了清晰起见添加了图片