0

을 기반으로, 경우 FireStore 데이터베이스는 아래 각 안드로이드 클라이언트가 하나 개의 문서는 그/그녀의 장치에 매핑이 곳처럼 보인다 Document_sdfljkhsdio (specific to Android User 1)경우 FireStore는 - 어떻게 인증없이 설치 보안 규칙을하지만, 안드로이드 클라이언트/요청 데이터 내 경우

FireStoreCollection 
    Document_sdfljkhsdio (specific to Android User 1) 
      Collection_xyz 
        Document_xyz      
    Document_kjjkssefd (specific to Android User 2) 
      Collection_xyz 
        Document_xyz      
    Document_sqdfwdfsme (specific to Android User 3) 
      Collection_xyz 
        Document_xyz 

내가 구글 인증을 구현하는 대신 안드로이드에서 문서 이름을 보낼 수있는 경우

service cloud.firestore { 
    match /databases/{database}/documents { 
    match /document/{document_sent_from_client}/ { 
     allow read, write: if request.document_sent_from_client == document_sent_from_client; 
    } 
    } 
} 

는 확실하지 않다 중포 기지 콘솔에서 몇 가지 규칙을 요청 데이터로 문서 이름 Document_sdfljkhsdio를 보내고 일치하지 있어요 기기, 예인 경우 , 제발 제안하십시오. 당신이 어떤 더 나은 방법이있는 경우도

그리고

은 올바른 접근 방식 인 경우 제안 제안?

미리 도움을 주셔서 감사합니다.

답변

2

전혀 들리지 않습니다. Android 클라이언트에서 document_sent_from_client을 전달하려면 /document/document_sent_from_client 경로로 DocumentReference을 작성하면됩니다. the documentation에서 수정 :

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

그러나 보안 규칙 여기에 도움이되지 않습니다 : (그들은 문서의 경로를 알고 경우 즉) 클라이언트가 기존 문서를 요청하는 경우, 그들은 결과를 얻을 것이다. 그들이 존재하지 않는 문서를 요청한 경우 (예 : 이 문서의 경로 인을 모르는 경우) 작업이 실패합니다.

하는 당신은 본질적으로 document_sent_from_client의 키에 따라하는 것은 합리적으로 추측 할 수있다. 이러한 "무명의 보안"은 인증 된 사용자가 없을 때 상당히 일반적입니다.

+0

감사 순전히, 두 가지를 배웠 1) 내가 멀리 테스트에서 오전하지만 클라이언트 데이터를 2)는, 추측 할 수 있어야 잡기 위해, 그리고 또 다른 질문 https://stackoverflow.com/questions/47203390/how-을 게시하는 방법 설치 - firestore-security-rules- 올바르게 – Girish