【问题标题】:How we set the rule in Firebase Realtime Database for every user Read data which is add by another one but user can delete only own data?我们如何在 Firebase 实时数据库中为每个用户设置规则读取由另一个用户添加但用户只能删除自己的数据的数据?
【发布时间】:2020-03-03 08:13:13
【问题描述】:

这是我的 Firebase 实时数据库规则,假设这里有两个设备用户 A 和 B,A 通过 App 将数据添加到 firebase 实时数据库,所以 B 读取用户 A 添加的数据,同样 B 添加数据通过应用程序,所以A读取了该数据,但是用户A或B都只删除了他输入的自己的数据,A只删除了自己的数据,B只删除了自己的数据,但是两个用户都互相读取了数据..那么哪个规则是在这里申请。 我的规则是这样的

  {
    "rules": {
    ".read": true,
    ".write": false,
    "AllData": {
    "$uid": {
    ".read": true,
    ".write": "$uid === auth.uid"
    }
    }
    }
    }

数据发送到firebase是这样的,这是我的java代码,我的应用程序是支持谷歌和Facebook登录

 FirebaseUser mUser = mAuth.getCurrentUser ();
    String uid = mUser.getUid ();
    myRef = FirebaseDatabase.getInstance ().getReference ( "AllData" ).child ( uid );
    myRef.keepSynced ( true );//for syncronize the firebase data

Firebase 的数据是这样的

myapp-cbfba
|-- AllData
    |-WNOAsWDaVlQXq2DssE9AsUCw1jB3    <- Device A
    | |-M1UGU8pMJiNGd5zsG_r
    |   |-college:"ABES"
    |   |-contact:"956379797"
    |   |-dateTime:"03-03-2020 12:52:05"
    |   |-food: "Burger"
    |   |-name:"Vishal"
    |
    |-XiFNOWYYFHhjRdHx7AGOtchjN4x2   <- Device B
      |-M1UGqWNjWVIlbtluD6D
       |-college:"TMU"
       |-contact:"9578379797"
       |-dateTime:"03-03-2020 12:50:05"
       |-food: "Pizza"
       |-name:"Ankit"

【问题讨论】:

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


    【解决方案1】:

    这些规则只允许用户访问他们自己的内容:

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

    【讨论】:

    • 我已经应用了这条规则,但这不起作用,先生,我想要,每个人都读取数据,但删除该数据的所有者的数据。
    【解决方案2】:

    你可以这样做:

    {
      "rules": { // rule for all
        "AllData": { // rule for data
          "$uid": { /// rule for userID 
            ".write": "$uid === auth.uid" // return true/false for "==="
                  // this is rule for writing. 
          }
        }
      }
    }
    

    所以如果"$uid === auth.uid"基于uid返回真/假是auth.uid。

    【讨论】:

    • 请给我完整的代码先生。
    • 表示在userID里面写访问的完整规则。您必须了解编写其余部分的 firebase 规则。 firebase.google.com/docs/rules/rules-language
    • 我们如何在数据库规则上设置 return true false 先生?
    • 先生,在您的规则中,读取规则在哪里?
    • 设置为真。就像你现在的规则
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2020-12-29
    • 2019-09-21
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多