Правила симуляции - доступ разрешен; Android - доступ запрещен - PullRequest
0 голосов
/ 26 июня 2018

У меня есть правило, которое корректно выполняется в симуляции правил Firestore, как показано ниже.

Simulation

Документ / config / permissions - это множество массивов с именами X153, X154, X155 и т. Д., Которые содержат UID:

config/permissions

Когда я пытаюсь получить такой доступ в Android, я получаю ответ PERMISSION_DENIED.

Код:

DocumentReference docRef = db.collection("arcs").document("X153");
        docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    if (document.exists()) {
                        Log.d("FIREBASE", "DocumentSnapshot data: " + document.getData());
                    } else {
                        Log.d("FIREBASE", "No such document");
                    }
                } else {
                    Log.d("FIREBASE", "get failed with ", task.getException());
                }
            }
        });

UID, используемый в симуляции, такой же, как в Android:

firebaseauth

Если я установлю правило для аутентификации доступа к UID напрямую

  • Разрешение Android принято, документ возвращается.

Если я сглаживаю структуру config / permissions только для ключа / значений, например X153 : '9iXQBaG3Ycaey4cFUj8tZjhKMaB3', и меняю правило на

match /arcs/{x} {
    allow read: if request.auth.uid == get(/config/permissions).data[x];
}
  • Android возвращает разрешение на отказ.

Почему я получаю этот ОТКАЗ ОТ РАЗРЕШЕНИЯ, используя изображенное правило?

...