Firebase匿名和经过身份验证的规则

时间:2018-10-01 09:32:17

标签: firebase firebase-authentication

我正在尝试为我的Firebase用户编写一条规则。

我的目标是制定一条规则以允许在数据库中进行以下操作:

    通过Firebase auth进行身份验证的
  1. 匿名用户是临时匿名帐户
  2. 使用电子邮件和密码
  3. 已认证的用户。

我该如何实现?

2 个答案:

答案 0 :(得分:3)

Firebase Realtime Database中,您可以使用以下方法授予登录的每个人对您整个数据库的访问权限:

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

Cloud Firestore中,您可以使用以下规则完成此操作:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

请注意,这两个示例均来自Firebase文档,因此,我强烈建议您花一些时间来研究它。

答案 1 :(得分:3)

我不同意接受的答案。如果用户被认证为匿名用户,那么他仍然拥有UID,因此检查它是否为null不能解决问题。

'auth'变量具有'provider'属性,因此您要做的就是检查用户是否通过电子邮件和密码进行了身份验证或匿名身份验证:

{
  "rules": {
    ".read": "auth.provider != 'anonymous'",
    ".write": "auth.provider != 'anonymous'"
  }
}

更多内容来自文档:https://firebase.google.com/docs/reference/security/database#variables