Обновление после ваших комментариев:
Если вы хотите предоставить любому пользователю, прошедшему проверку подлинности, доступ на чтение ко всем документам в коллекции itinerary
(включая вложенные коллекции), выполните следующие действия:
service cloud.firestore {
match /databases/{database}/documents {
match /itinerary/{docId=**} {
allow read: if request.auth.uid != null;
}
//possibly add another rule for write
}
}
Первоначальный ответ:
Это потому, что при выполнении {userId=**}
вы используете " рекурсивный подстановочный синтаксис", см. https://firebase.google.com/docs/firestore/security/rules-structure#recursive_wildcards. Он будет соответствовать "всему совпадающему сегменту пути".
Вы должны сделать:
service cloud.firestore {
match /databases/{database}/documents {
match /itinerary/{userId}/itineraryList/{doc} {
allow read: if request.auth.uid == userId;
allow write: if request.auth.uid == userId;
}
}
}
Вы также можете посмотреть это официальное видео Firebase о правилах безопасности Firestore, в котором объясняется этот момент, среди прочего: https://www.youtube.com/watch?v=eW5MdE3ZcAw