2017-11-04 24 views
0

私はCloud Forestoreを使用してユーザーデータを保存しようとしています。ルールは、私はこのようなルックスを設定している:特定のユーザーのCloud Firestoreファイルにアクセスできません

service cloud.firestore { 
    match /databases/{database}/documents { 
    match /users/{userID} { 
     allow read: if request.auth.uid == userID; 

     match /{lists} { 
     allow write: if request.auth.uid == userID; 
     } 
    } 
    match /users/test { 
     allow read, write: if true; 
    } 
    } 
} 

私は何を達成しようとすると、ユーザーがサブコレクションとサブ文書を含め、{}ユーザーIDでeverytingを読み取ることができるということです。さらに、ユーザーは{lists}コレクションとすべてのサブコレクションとサブ文書に書き込むことができるはずです。

私はこのようなクラウドFirestoreにアクセス:

db.collection("users").document(mAuth.getUid()).collection("lists").document(String.valueOf(document.getDocId())) 
        .set(cloudListInfo) 
        .addOnSuccessListener(new OnSuccessListener<Void>() { 
         @Override 
         public void onSuccess(Void aVoid) { 
          error = 0; 
         } 
        }) 
        .addOnFailureListener(new OnFailureListener() { 
         @Override 
         public void onFailure(@NonNull Exception e) { 
          error = -3; 
          globalVars.logException(TAG, "docInfo:ExportToCloud FAILURE", e); 
         } 
        }); 
     } 

私が手にエラーがこれです:

FAILURE:Exception.string:com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: Missing or insufficient permissions. 

私は "テスト" -collectionとその値にアクセスすることができます。

「テスト」マッチのルールのように、すべてに書き込み/読み取りを許可するルールを使用してユーザーのレコードを作成しました。これは、より精巧なルールでデータを保護するための私の努力の前に行われました。

なぜこれが機能していないのかわかりません。ほとんどの場合、それは些細なことですが、私はほとんど盲目的な理由を見つけようとしています...

答えて

0

あなたののセキュリティルールのように見えます。

はこの試してみてください。また

service cloud.firestore { 
    match /databases/{database}/documents { 
     match /users/{userID} { 
      allow read: if request.auth != null; 

      match /{lists} { 
       allow write: if request.auth != null; 
      } 
     } 

     match /users/test { 
      allow read, write: if true; 
     } 
    } 
} 

を、あなたが起こらないようにエラーをでをログに記録する必要があることを忘れないでください。

+0

しかし、あなたのルールでは、ログインしているユーザーはすべてのユーザーデータにアクセスできます。私が適用したルールは、ユーザー固有のアクセスを確保するためにドキュメントからコピーされます。または私は間違っていますか?そして私はログインしています。 – user1086500

関連する問題