Я пытался реализовать правила безопасности для моего проекта Firestore. Это утверждение здесь не работает, кто-нибудь может сказать мне, почему? На данный момент я ничего не понимаю.
Чего я пытаюсь достичь: пользователь может читать список пользователей, только если этот пользователь есть в списке пользователей.
match /databases/{database}/documents {
match /groups/{group}/userlist/{document=**}{
allow read: if exists(/databases/$(database)/groups/$(group)/userlist/$(request.auth.uid));
//for troubleshooting: the general rule below works fine and access is granted
//allow read :if request.auth.uid != null;
}
}
Вот пример кода из мое приложение, где доступ с указанным заявлением не предоставляется. Как я сказал в закомментированных строках в коде «правил»: я получаю результаты, когда устанавливаю правила для более общего условия доступа.
Следующий код взят из onBind в адаптере. Я добавил строку, которая печатает uid, просто чтобы быть уверенным.
System.out.println("UserId: "+ mAuth.getCurrentUser().getUid());
db.collection("groups").document(model.getGroupId()).collection("userlist").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
int members = queryDocumentSnapshots.size();
holder.mPreviewText.setText("Number of Members: " + members);
}
});
I/System.out: UserId: iWBdGRNmJCOEtXWKefeD2T7cH1l2
I/System.out: UserId: iWBdGRNmJCOEtXWKefeD2T7cH1l2
I/System.out: UserId: iWBdGRNmJCOEtXWKefeD2T7cH1l2
I/System.out: 1
I/System.out: UserId: iWBdGRNmJCOEtXWKefeD2T7cH1l2
W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query(groups/uaRV4n21PWov5p6VPlYH/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
I/System.out: UserId: iWBdGRNmJCOEtXWKefeD2T7cH1l2
I/System.out: UserId: iWBdGRNmJCOEtXWKefeD2T7cH1l2
W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query(groups/tqsFIMhaMdZUfx6M3Guz/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
I/System.out: UserId: iWBdGRNmJCOEtXWKefeD2T7cH1l2
I/System.out: UserId: iWBdGRNmJCOEtXWKefeD2T7cH1l2
W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query(groups/tm09NSiqZ5rDaBZzH52g/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query(groups/iye5A0JaltId8xYeQLie/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query(groups/cnj4BOMHY0LlXb7KJsW0/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query(groups/UGmozZfEOKXX1sajT1NW/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query(groups/S4lJIyAMfDtQUTS08PWa/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query(groups/uaRV4n21PWov5p6VPlYH/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
W/Firestore: (21.3.1) [Firestore]: Listen for Query(target=Query(groups/tqsFIMhaMdZUfx6M3Guz/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
Я прочитал всю документацию, и я думаю, что код должен выглядеть, но он не работает, пользователи, которые в списке не получить разрешение на чтение.
Query(target=Query(groups/uaRV4n21PWov5p6VPlYH/userlist order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}