Простое приложение для знакомств: правила безопасности указаны для пути - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь выполнить некоторые правила безопасности для простого приложения для знакомств, использующего Firebase (на самом деле тест, поэтому не ожидайте многого от моей структуры данных). У меня есть следующая база данных:

Female_User (Collection)
........JikoSUJJozEEUJz7gLQq (Document)
        ........Data (Collection)
        ........Likes (Collection)
                ........9SpjkLtbo5fKz1f3doGx (Document)
        ........Unlikes (Collection)
        ........Matches (Collection)

Мужской пользователь эквивалентен.

Предположим, что мы - мужчина. Пользователь 9SpjkLtbo5fKz1f3doGx, любящий женщину. Пользователь JikoSUJJozEEUJz7gLQq:

Процесс записи в женскую (как правило, противоположности) /Matches/{documents} разрешается только в том случае, если в ней есть * мужской идентификатор /Likes/{documents}.

Я попробовал следующие правила безопасности с симулятором:

service cloud.firestore {
  match /databases/{database}/documents {
    allow read;
    match /Female_User/{UserID}{
        match /Matches/{MatchIDs}{
            allow write: if exists(/databases/$(database)/documents/Female_User/$(User_ID)/Likes/$(request.auth.uid));
        }
    }
  }
}

Процедура запрещена каждый раз в симуляторе. Где ошибка в моей проверке? И нужно ли мне указывать женский UID, потому что если у нас несколько учетных записей и 3 женщины понравились пользователю мужского пола, разве метод не позволил бы мужчине писать все время и для каждой учетной записи, кроме тех, которые ему нравились?

1 Ответ

0 голосов
/ 08 января 2019

Значение шаблона вашего правила UserID не соответствует его использованию в пути к документу как User_ID. Обратите внимание на подчеркивание.

...