使用特定的UID锁定写访问

时间:2019-01-07 19:23:25

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

我想制定一条规则,只有登录后才能写数据库。

我的理解是".write": "$uid === auth.uid"仅限于授权用户,而不仅限于我。

我不确定100%如何做到这一点,所以最终我要做的是设置GitHub登录名(用于2FA)。

我从中获取了UID,并将其添加到我的结构的admins部分中,并进行了规则检查。

我不确定这是否真的可行,因为我在这里设置了它,所以我想问一下社区。

{
  "rules": {
    ".write": "root.child('admins').child('uid').val() == auth.uid",
    "admins": {
      ".read": "false"
    },
    "users": {
      ".indexOn": ["id"],
      ".read": "root.child('admins').child('uid').val() == auth.uid"
    },
    "posts": {
      ".indexOn": ["location"],
      ".read": "true"
    }
  }
}

1 个答案:

答案 0 :(得分:1)

Custom Claims

  

Firebase Admin SDK支持在用户上定义自定义属性   帐户。这提供了实现各种访问的能力   Firebase中的控制策略,包括基于角色的访问控制   应用。这些自定义属性可以为用户提供不同级别的   访问(角色),这是应用程序的安全规则中强制执行的。

{
  "rules": {
    "adminContent": {
      ".read": "auth.token.admin === true",
      ".write": "auth.token.admin === true",
    }
  }
}