0

시뮬레이터는 Posts 키에 대한 읽기/쓰기를 허용하지만 Users 키 규칙에 대한 결과는 정확합니다. 게시물의 각 게시물에는 사용자 키의 사용자를 나타내는 uid 값이 있습니다.Firebase DB 규칙 시뮬레이터는 인증되지 않은 사용자에 의한 읽기 및 쓰기를 허용합니다.

내 규칙이 잘못되었거나 시뮬레이터가 잘못 되었습니까? 온순하게, 나는 Firebase을 처음 사용합니다. :)

Screenshot

두 같음 :

Screen

편집 됨 데이터보기 : https : //로 i.stack.imgur.com/GaYMj.png은 (주위 공백을 제거 "//")

답변

1

규칙을 변경하여 uid 자녀가 있는지 확인하십시오. 예를 들어 : 빠른 테스트를 바탕으로

".read": "data.child('uid').exists() && data.child('uid').val() === auth.uid" 

, 내가 무엇을 발생하는 것입니다 것은 uid 아이가 존재하지 않는 경우, data.child('uid').val()의 평가가 실패하고 그것을 거짓의 값을 할당하여 처리하는 것을 생각합니다. 마찬가지로 사용자가 인증되지 않았기 때문에 auth은 null이고 auth.uid도 false로 평가됩니다. 따라서 귀하의 규칙은 실제로 ".read": "false === false"이되며 이는 사실입니다.

처음으로 규칙을 사용하여 읽음을 시뮬레이트하고 uid 자식이 내 데이터베이스에 /posts/1 이하인 경우 읽음이 승인되었습니다. 내가 uid 아이를 추가했을 때, 그 아이는 허락되지 않았습니다.

+0

uid는 항상 각 게시 키에 대해 존재합니다. 수정 된 데이터보기 스크린 샷을 참조하십시오. 나는 당신의 모범을 시도하고 다시보고 할 것입니다. – budd

+0

그게 효과가 있었어. 하지만 실제로 존재하는 데이터에 대해 실행되지 않거나 내 데이터에 대한 진정한 수정 사항 (편집 된 데이터 화면 참조) 때문입니까? – budd

+0

시뮬레이터는 데이터베이스의 실제 데이터를 사용합니다. 스크린 샷은 '- CZWF'키의 데이터 만 보여줍니다. 나는 당신의 예제에서 사용했던 핵심 '1'아래에 무엇이 있는지 모른다. –