2016-09-08 1 views
0

다음은 객체 목록에 대한 규칙입니다. 인증을 받으면 모든 것을 액세스 할 수 있습니다. 그렇지 않은 경우 일부 객체는 공개이고 일부 객체는 공개 속성입니다 (부울 public property). 개체에 직접 액세스하려고하면 $ 개체의 규칙이 올바르게 작동합니다.Firebase 데이터베이스 규칙 : 부모로부터 하위 데이터에 접근하기

"list": { 
    ".read": ???????????? , 
    ".write": "auth != null", 
    "$object": { 
    ".read": "auth != null || data.child('public').val() === true", 
    ".write": "auth != null" 
    } 
} 

그러나 인증되지 않은 경우 공용 개체 만 나열하는 규칙도 필요합니다. 부모 목록 내에 생성 된 $ 키의 속성에 대한 읽기 규칙을 설정하려면 어떻게해야합니까? 당신은에서 .read

에 의해 필터링을 할 수없는

"list":{ 
    ".read": "auth != null || data.child('$key').child('public').val() === true" 
} 
+0

Mathew는 아래에서 설명하지만 http://stackoverflow.com/a/14298525/209103 (또한 "규칙은 필터가 아닙니다"라는 마법 문구를 언급하는 대부분의 다른 질문을 참조하십시오). –

답변

3

: 같은 https://firebase.google.com/docs/database/security/securing-data

규칙

규칙 원자 방식으로 적용되는 필터되지 않습니다. 즉, 읽기 또는 쓰기 작업은 해당 위치에 규칙이 없으면 즉시 실패합니다. 즉, 액세스를 허용하는 부모 위치에있는 입니다. 영향을받은 모든 모든 자식 경로에 액세스 할 수있는 경우에도 부모 위치에서의 읽기는 을 완전히 실패합니다.

+0

그래, 나는 그것을 읽었다. 그래서 나는 아이로부터 부모에게 .read 조건을 전달하려고합니다. 그러나 객체를 나열 할 때 사용자가 볼 수 있거나 볼 수없는 것을 서버 측에서 필터링하는 방법이 있어야합니다. 내가 잘못? – cerealex

+1

아니, 그게 정확히 말하는거야. 사용자별로 필터링하려면 사용자가 다른 곳에서 저장해야합니다. –

+0

그렇다면 auth가 관련되어 있지 않으면 전체 목록을 표시할지 아니면 아무것도 표시하지 않을지 만 선택할 수 있습니다. – cerealex

관련 문제