模拟规则-允许访问; Android-访问被拒绝

时间:2018-06-26 18:20:09

标签: android firebase google-cloud-firestore firebase-security-rules

我有一条规则可以在Firestore Rules模拟中正确执行,如下所示。

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返回拒绝的权限。

为什么我使用如图所示的规则收到此PERMISSION DENIED答复?

0 个答案:

没有答案