用于读取集合的Firestore规则

时间:2018-08-08 19:13:11

标签: javascript firebase firebase-authentication google-cloud-firestore firebase-security-rules

用于读取集合的Firestore规则将覆盖文档规则,以拒绝未经授权的其他用户数据访问。

这是我的情况,我正在通过数据库中的身份验证和文档关联的电话号码获取用户信息。我要使用 where 子句查询整个 / users 集合,并且在Firestore规则中,我允许任何人阅读 / users 集合,但我认为这是不安全的。

JavaScript

const phone_number = firebase.auth().currentUser.phoneNumber // Example: "+5521988887777"
const usersRef = firebase.firestore().collection('users')

usersRef.where("phone_number", "==", phone_number).limit(1).get()
  .then(snapshot => {
    const doc = snapshot.docs[0]

Firestore规则

service cloud.firestore {
  match /databases/{database}/documents {
    match /users {
      allow read;
    }
    match /users/{user} {
      allow read, write: if request.auth != null && request.auth.token.phone_number == resource.data.phone_number;
    }
  }
}

谢谢,我正在尝试解决此问题。

1 个答案:

答案 0 :(得分:0)

为更正安全规则,我已删除了允许所有读取的第一个条件(如上所述)。

Firestore工作规则

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{user} {
      allow read, write: if request.auth != null && request.auth.token.phone_number == resource.data.phone_number;
    }
  }
}