2014-10-17 3 views
0

firebase db에 user 오브젝트가 있습니다. 여기에는 민감한 날짜 (예 : 전자 메일)가 들어 있습니다.Firebase 오브젝트를 검색 할 때 의도적으로 하위 값을 반환하지 않습니다.

사용자 정보 (현재 사용자가 아닌 사용자)를 가져와야하는 상황에서이 데이터를 반환하지 못하게하려면 어떻게해야합니까? (예를 들어, 사용자는 다른 사용자의 프로필 데이터를 볼 수 있다면.)

옵션

  1. 사용 중포 기지 security rules :이 옵션 문제는 검색하려고 할 때 발생 오류의 톤이 있다는 것입니다 사용자 개체 (해당 사용자 개체 아래의 중요한 자식 값을 "숨길"경우에도).

  2. 공용 데이터와 개인 데이터가 서로 다른 두 경로에 있도록 내 데이터를 재구성하십시오.

옵션 # 2는 나에게 적합하지만 나보다 중요한 해결책을 찾기 전에 확인하기 쉬운 솔루션이 아닌지 확인하고 싶습니다.

답변

1

보안 규칙과 관련하여 Firebase 작업은 전부 또는 일부가 아닙니다. 클라이언트가 해당 위치에있는 모든 데이터를 읽을 수있는 권한을 가지고 있지 않기 때문에이 데이터의 일부를 읽을 수있는 권한이있다하더라도, 실패 /users/<uid>에서 모든 데이터의로드를 시도하고 그 결과

, . 마찬가지로 위치에 대한 쓰기 작업도 같은 방식으로 이루어 지므로 작업을 계속하려면 전체 권한이 필요합니다.

이 사용 사례를 처리하려면, 다음과 같은 데이터 구조 조정을 고려 :

{ 
    "rules": { 
    ".read": false, 
    ".write": false, 
    "users": { 
     "$uid": { 
     // Users can read/write all of their own data 
     ".write": "auth != null && auth.uid == $uid" 
     "public": { 
      // public data goes here 
      ".read": true // Make all of this data public 
     }, 
     "private": { 
      // private data goes here 
     } 
     } 
    } 
    } 
} 
+0

은 참으로 이것이 내가 결정 경로입니다. 네가 맞다고 생각해. 그게 유일한 방법이야. – Kyle

관련 문제