Vue.js Firebase实时数据库规则-为应用程序函数修改的属性设置规则



我有一个项目数据库结构:

users
isSuperMan: false
isAdmin: false
info:
givenName:  xxxxxx
address:   yyyyyy
....
memberships:
2018:
paid: 10
paidOn:  20198-01-01
paymentType: 1
2017:
paid: 10
paidOn:  20198-01-01
paymentType: 1 
....

并且我当前的Firebase规则被设置为允许登录的用户创建/更新/删除他自己的数据

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

由于我完全是Firebase规则的新手,我不知道如何设置它们来处理以下业务案例,任何帮助都将不胜感激我想知道我是否不应该去Firestore处理这样的案件?

  1. 具有Superadmin或Admin角色(true(的登录用户可以读取/写入所有数据

  2. 标准登录用户可以读取/写入自己的信息

  3. 标准用户可以读取但不能更新/删除成员身份
  4. 会员资格数据仅在登录用户付款时写入

要让具有管理员角色的人对整个数据库进行读取访问,请使用以下规则:

{
"rules": {
".read": "root.child('users').child(auth.uid).child('isAdmin').val() === true"
}
}

此读取规则将替换您当前拥有的规则,因为现在所有登录用户都可以读取整个数据库。

为了允许每个用户读取/写入自己的信息,请将以上内容修改为:

{
"rules": {
".read": "root.child('users').child(auth.uid).child('isAdmin').val() === true",
"users": {
"$uid": {
".read": "auth.uid === $uid",
".write": "auth.uid === $uid"
}
}
}
}

我强烈建议查看有关安全规则的Firebase文档,特别是关于保护用户数据的部分(包括我上面展示的第二步(,以及解释安全规则的精彩视频。