Странное поведение правила безопасности Firestore - PullRequest
0 голосов
/ 25 апреля 2019

В правиле безопасности Firestore следующая строка работает для операции чтения, чтобы найти request.auth.uid в массиве целых чисел resource.data.uids :

allow read: if request.auth.uid in resource.data.uids;

Но приведенная выше строка не работает для операции обновления.Мне пришлось привести request.auth.uid к целому числу, чтобы оно работало для операции обновления следующим образом:

allow update: if int(request.auth.uid) in resource.data.uids;

Я хотел бы знать причину этого странного поведения.

1 Ответ

0 голосов
/ 25 апреля 2019

После изменения типа данных uid, используемого в .where("uids", "array-contains", uid), на целое число, операции чтения и обновления теперь работают со следующей строкой:

allow read, update: if int(request.auth.uid) in resource.data.uids;

Теперь все выглядит нормально, поскольку resource.data.uids содержит массив целых чисел, а request.auth.uid содержит числовое строковое значение, которое должно быть преобразовано в целое число для сравнения.

...