0

나는 정말로 여기에서 내 머리를 긁적이며 많은 다른 경우에 최대한 많이 읽었습니다. 나는 Firebase을 처음 사용하지만 그것에 대해 어느 정도 이해하고 있습니다. 특정 사용자에 대한 데이터베이스의 특정 레코드를 제한하려고했습니다. (I도에서/계정을 넣어, 내가 아래 조건을 사용Firebase 사용자 보안 시뮬레이션

{ 
    "rules": { 
    "accounts":{ 

     "$uid":{ 
     ".read": "auth.uid == $uid", 
     ".write": "auth.uid == $uid" 
     } 
    }, 

    } 


} 

을 시뮬레이터에서 : 여기

"accounts" : { 
    "13asdf313" : { 
     "dog" : "bacon", 
     "email" : "[email protected]", 
     "first" : "luis", 
     "last" : "xxxx" 
    }, 
    "HlELrrGDbiMKgxxxx" : { 
     "name" : "Luis" 
    }, 
    "anthony" : { 
     "email" : "[email protected]", 
     "last" : "xxxx", 
     "name" : "anthony" 
    }, 
    "jpSq6UzX0mcAvExxxx" : { 
     "name" : "anthony" 
    } 
    } 

설정 한 규칙은 제가 읽어 봤는데 기반으로 : 그래서 여기 내 JSON이다 위치 필드). Firebase 계정 목록에서 직접 복사 한 UID : HlELrrGDbiMKgxxxx를 사용했습니다.

enter image description here

항상 내가 잘못 뭐하는 거지 실패

enter image description here

으로 올라오고있다?

답변

3

위치 필드에 accounts/HlELrrGDbiMKgxxxx을 삽입해야합니다.

그렇지 않으면 당신이 전체 데이터베이스에 액세스하려고 (표준 위치하여 전체 데이터베이스를 포함 루트이다). 귀하의 규칙은 단지 자식 accounts/$uid에 대해 설정되고 인증에서 사용자 ID에 액세스하고 데이터베이스의 하위 위치가 일치해야합니다.

+0

오, 그래서 URL을 통해 쿼리하는 경우 해시가있는 모든 레코드를 가져 오려면 계정/을 추가해야합니까? – Groovdafied

+1

예,하지만 그건 의미가 있습니다. 사용자 계정 데이터에 액세스하고 사용자가 로그인 한 경우 필요한 정보가 제공됩니다. JS에서는 쿼리가 비슷하게 보입니다. 'root.child ('accounts/$ {auth.uid}') .once ('value')'이렇게하면 완전한 사용자 항목을 반환해야합니다. – creativecreatorormaybenot

+1

좋아, 좋아! 고맙습니다! – Groovdafied