где cluase не работает после правила безопасности в облаке Google - PullRequest
0 голосов
/ 01 октября 2019

это мое правило безопасности для firebase, оно выдает разрешение на запрос:

app.firestore().collection('users').where('email', '==' ,'test@gmail.com').get().then(snap => console.log(snap.docs[0].data())).catch(err => console.log("err",err));

вышеупомянутый запрос выдает ошибку разрешения !! !! 1004 *

service cloud.firestore {
  match /databases/{database}/documents {
    // Make sure the uid of the requesting user matches name of the user
    // document. The wildcard expression {userId} makes the userId variable
    // available in rules.
    match /users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
  }
}

почему?

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Ваше правило безопасности гласит, что пользователь может читать документ только у пользователей с идентификатором, совпадающим с его аутентифицированным UID. Но ваш запрос пытается прочитать любой документ, в котором поле электронной почты имеет какое-то значение. Поскольку этот запрос может попытаться прочитать документы, отличные от того, который соответствует UID, запрос будет каждый раз завершаться ошибкой. Теперь, когда у вас есть правила, клиенту разрешено получать () только свой собственный документ, без каких-либо других запросов.

0 голосов
/ 01 октября 2019

Вы должны помнить, что правила безопасности не являются фильтрами .

Пример:

мой uid: 123123

doc1 : электронная почта: test@gmail.com, id: 123123

Правило безопасности будет действовать для doc1.

doc2 : электронная почта: test@gmail.com, id: 321321

Правило безопасности не выполнится для doc2.

Это потому, что ваше правило безопасности говорит, что если в ALL документах есть uid, то оно должно пройти, нопотому что это не так, это дает сбой.

Чтобы это исправить, вам нужно будет предоставить некоторую дополнительную информацию о том, как настроена ваша база данных и что вы запрашиваете. То есть вы находите всех электронных писем, которые соответствуют критериям, или что-то еще.

...