2016-07-24 13 views
1

보안 규칙을 거부하고 내가 인증과 같은 몇 가지 규칙을하고 싶어하지만 오류가 발생하고 어떻게해야할지 모르겠어요 :중포 기지 권한이 중포 기지 내 데이터베이스에서 JSON입니다

"users" : { 
    "0BuRcGEZQRUaQ5T2gQf4RDUcuZE2" : { 
     "address" : "La Prensa", 
     "email" : "[email protected]", 
     "id" : "0BuRcGEZQRUaQ5T2gQf4RDUcuZE2", 
     "lastName" : "Vega", 
     "middleName" : "Paul", 
     "name" : "Christian", 
     "nroDocument" : "171645220", 
     "phoneNumber" : "1234567890", 
     "rol" : "administrador", 
     "secondLastName" : "Niama" 
    } 
} 

{ 
    "rules": { 
     "users": { 
     "$user_id": { 
      ".read": "auth != null", 
      ".write": "auth.uid === $user_id" 
     } 
     } 
    } 
} 

오류 :

이들은 내가 사용 규칙은

angular.js:13550 Error: permission_denied at /users: Client doesn't have permission to access the desired data.

이 내 웹 응용 프로그램에서 얻을 오류입니다. 내가 등록한 사용자를 볼 수 없습니다. 그러나 사용을 중지하면 $user_id이 작동합니다. 나는 변수가 내 가치를 얻지 못한다고 생각한다.

코드 :

resultUsers : function() { 
    var ref = pharmacyFactory.ref.child("users"); 
    var result = $firebaseArray(ref); 
    return result; 
}, 
+0

귀하의 질문에 데이터를 읽거나 쓰는 것이 아무것도 없으므로 권한 거부 오류가 발생할 수 있습니다. 오류를 재현하는 최소한의 코드를 보지 않고도 대답하기 어려울 것입니다. –

+0

angular.js : 13550 오류 :/users에서 permission_denied : 클라이언트가 원하는 데이터에 액세스 할 권한이 없습니다. 이것은 내 웹 응용 프로그램에있는 오류입니다. 등록한 사용자는 볼 수 없지만 $ user_id 사용을 중지하면 변수가 내 값을 얻지 못한다고 생각합니다. –

+0

@StevenSparkies 코드를 추가하십시오. 사용자 데이터를 검색하는 데 사용합니다. – adolfosrs

답변

2

문제는 당신이 전체 /users 지점을 추적하는 $firebaseArray(ref)를 사용하고 있지만 /users/user_id 내부에 읽기 규칙을 배치하는 것입니다. 따라서 /users에 읽기 규칙이 없기 때문에 기본값은 false으로 설정됩니다.

{ 
    "rules": { 
     "users": { 
     ".read": "auth != null", 
     "$user_id": { 
      ".write": "auth.uid === $user_id" 
     } 
     } 
    } 
} 

만 볼 수있는 사용자를 원하는 경우 :

는 사용자가 전체 /users 지점에 대한 읽기 액세스 할 수 있지만 다음과 같은 것이에 관심이있을 수 있습니다 자신의 사용자 데이터 만 기록 할 경우 자신의 사용자라면 $firebaseArray 대신 $firebaseObject(ref.child(userId))을 사용해야합니다.

{ 
    "rules": { 
     "users": { 
     "$user_id": { 
      ".read": "auth.uid === $user_id", 
      ".write": "auth.uid === $user_id" 
     } 
     } 
    } 
} 
+0

완벽하게 작동합니다. 감사합니다.하지만 내가 원하는 것은 사용자가 다른 사용자가 아닌 자신의 사용자 만 볼 수 있도록하려는 경우입니다. –

+0

@StevenSparkies가 방금 대답을 업데이트했습니다. :) – adolfosrs