2016-11-28 5 views
2

가족이 있습니다. A, B, C, DA이 선두입니다. 우리는 침입자가 있습니다 E. b, c, d은 A의 데이터를 읽고 쓸 수 있습니다.특정 사용자에 대한 Firebase 읽기/쓰기 권한

모두가 이메일로 인증 :

이 편지의 모든

(B, C, D는, ...)이 UID의 여기

내가 지금까지 무엇을 가지고있을 것입니다. 사람들은 에게 그의 그룹에 대한 요청을 보냅니다. 그가 받아들이면, 그는 그에게 읽고 쓸 수 있습니다. 데이터베이스에 대한

디자인 중포 기지

{ 
    "Leaders" : { 
    "A" : { 
     "ALLOWED" : { 
     "b" : 0, 
     "c" : 0, 
     "d" : 0 
     }, 
     "DATA" : { 
     "blah blah1" : "content writable by bcd", 
     "blah blah2" : "content writable by bcd" 
     }, 
     "REQUESTS" : { 
     "E" : 0 
     } 
    } 
    } 
} 
나는 B, C, D을 이동하지만, 단지을 허용 사람들이 읽을 수있는 다음 있도록 어떻게 규칙을 만들 수 있죠 CRUD를 사용할 수 있습니다

/각 리더에 대한 데이터 쓰기?

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null" 
    "Leaders":{ 
    ".write": "$uid == ????" 
    } 
    } 
} 

감사합니다. 노드가 현재 선두에서 존재하는 경우

+0

질문에 JSON 트리 그림이 포함되었습니다. 실제 JSON을 텍스트로 바꾸십시오. Firebase 데이터베이스 콘솔에서 JSON 내보내기 링크를 클릭하면 쉽게 얻을 수 있습니다. JSON을 텍스트로 사용하면 검색이 가능해 지므로 실제 데이터로 테스트하고이를 사용하여 쉽게 답변 할 수 있습니다. 일반적으로 할 일은 단지 좋은 일입니다. –

+0

@FrankvanPuffelen, 아! 미안 해요, 우리가 이것을 할 수 있다는 것을 알지 못했고, 분 단위로 업데이트 될 것입니다 – DilllyBar

답변

4

는 확인의 문제이어야한다 :

{ 
    "rules": { 
    "Leaders":{ 
     "$leaderuid": { 
     ".write": "$leaderuid == auth.uid", 
     "DATA": { 
      ".write": "data.parent().child('ALLOWED').child(auth.uid).exists()" 
     } 
     } 
    } 
    } 
} 

것을 나는 변경 :

  • /쓰기 규칙을 읽어 최상위를 제거합니다. 그렇지 않으면 모든 인증 된 사용자가 모든 데이터를 읽고 쓸 수 있으므로 더 이상 낮은 수준에서 그 허가를 가져갈 수 없습니다.
  • 리더는 전체 노드를 작성할 수 있습니다. documentation on securing user data에 설명 된대로 여기에서 auth.uid을 사용합니다.
  • ALLOWED 노드에 uid가있는 경우 사용자는 DATA 아래에만 쓸 수 있습니다.
+0

안녕하세요. "리더십"이 무엇을 의미하는지 설명해 주시겠습니까? 이 답변을 주셔서 감사합니다. – DilllyBar

+0

$ leaderuid $ {}를 (를) 가지고있을 때 컨텍스트 란 무엇입니까? – DilllyBar

+0

또한 "DATA"가있는 행에서 ","가 예상됩니다. – DilllyBar

관련 문제