Если мы создадим новые идентификаторы документов на основе идентификатора пользователя Firebase Authentication (чтобы нам не нужно было запрашивать и получать документ непосредственно от известного идентификатора пользователя), можем ли мы создать правило безопасности, которое мы разрешили бы только пользователям, которые являются владельцами такой идентификатор пользователя Firebase Authentication для создания идентификатора документа с таким идентификатором пользователя? Например;
We have two users as follows:-
Firebase user ID: AAA
Firebase user ID: BBB
Expected results from Firestore security rules
AAA creates document ID: AAA-1 - (ok)
AAA creates document ID: AAA-2 - (ok)
AAA creates document ID: BBB-1 - (not ok)
AAA creates document ID: XYZ-1 - (not ok)
BBB creates document ID: AAA-1 - (not ok)
BBB creates document ID: AAA-2 - (not ok)
BBB creates document ID: BBB-1 - (ok)
BBB creates document ID: XYZ-1 - (not ok)
Можно ли установить такое правило в Firestore?
Что, если пользователь переопределит идентификатор документа в браузере?
Вы пишете правила безопасности, чтобы запретить и это.
Вы нашли решение? Я борюсь с той же проблемой
Гораздо лучше добавить поле владельца в документ, которому вы назначаете идентификатор пользователя, создавшего документ, а затем просто проверьте это поле при обновлении, например.
allow update: if resource.data.owner == request.auth.uid
Вы можете получить идентификатор целевого документа запроса с помощью request.resource.id
в соответствии с документация. Затем вы можете сравнить его с запросом идентификатора пользователя auth с чем-то вроде allow create: if request.resource.id == request.auth.uid
, чтобы ограничить разрешение.
В симуляторе не удается выполнить действие создания, хотя оно хорошо работает для обновления или действия удаления.
Если вы сохраните идентификатор пользователя в документе, то это простая задача. Поскольку у вас есть доступ к идентификатору пользователя в правилах безопасности