2013-01-23 2 views

답변

31

당신은 아주 쉽게 그들에게 자신을 표현할 수 있기 때문에 중포 기지에서 "그룹"에 대한 명시 적 지원이 없습니다. 상황에 따라 두 가지 옵션이 있습니다.

firebase에 그룹 정보를 저장 중입니다.

다음의 데이터는 2 개 그룹 ('알파'와 '베타') 및 보호 된 데이터의 3 개 세트 ('thing1', 'thing2'및 'thing3')

{ 
    "groups": { 
    "alpha": { 
     "joe": true, 
     "sally": true 
    }, 
    "beta": { 
     "joe": true, 
     "fred": true 
    } 
    }, 
    "data": { 
    "thing1": { 
     "group": "alpha" 
     /* data accessible only by the "alpha" group */ 
    }, 
    "thing2": { 
     "group": "beta" 
     /* data accessible only by the "beta" group */ 
    }, 
    "thing3": { 
     "group": "alpha" 
     /* more data accessible by the "alpha" group */ 
    } 
    } 
} 

을 나타내는 데 사용될 수있다 내가 {ID : '샐리'}로 인증하고있어 경우에 따라서 다음

{ 
    "rules": { 
    "data": { 
     "$thing": { 
     ".read": "root.child('groups').child(data.child('group').val()).hasChild(auth.id)", 
     ".write": "root.child('groups').child(data.child('group').val()).hasChild(auth.id)" 
     } 
    } 
    } 
} 

: 그럼 우리가 보안을 적용하기 위하여 다음과 같은 규칙을 사용하여 내 인증 개체로, 나는 thing1 및 thing3에 액세스 할 수 있지만거야 thing2.

인증 토큰에 그룹 정보를 저장 중입니다.

자신 만의 인증 토큰을 생성하고 있으며 인증 할 때 사용자가 속한 그룹을 알면 생성 한 인증 토큰에 그룹 목록을 저장할 수 있습니다. 예를 들어 사용자 'fred'의 인증 토큰을 생성 할 때 "{id : 'fred', groups : {alpha : true, beta : true}}"를 포함 시키십시오. 그러면

다음 그룹 등록을 시행 할 수 있습니다.

{ 
    "rules": { 
    "data": { 
     "$thing": { 
     ".read": "auth[data.child('group').val()] != null", 
     ".write": "auth[data.child('group').val()] != null" 
     } 
    } 
    } 
} 
+0

마이클, 빠른 응답을 주셔서 감사합니다. 첫 번째 옵션은 우리가 찾고있는 것이 었습니다. – user1452215

+1

데이터에 대한 액세스 권한을 부여하려면 어떻게해야합니까? 여러 그룹에 대한 $ thing (단 하나가 아닌)? .hasAnyChild() 또는 이와 비슷한 것이 있습니까? – Pl4yeR

+0

첫 번째 JSON 객체는 정확히 어디에 있습니까? 그것은 그룹, 알파, 베타 등을 정의합니까? 내가 그걸 실제 규칙 보안 객체에 넣을 수 있다고 생각하지 않아요. 내가 놓친 게 아니라면 요? – Matt

관련 문제