0

최고 관리자는 모든 사용자가 자신의 프로필을 편집하고 새 콘텐츠를 게시 할 수있는 특별한 uid를 가진 사용자입니다.Firebase에서 '최고 관리자'를 만드는 방법은 무엇입니까?

수퍼 관리자를 만드는 방법은 무엇입니까?

+0

현재 DB 구조와 보안 규칙을 제공 할 수 있습니까? – Orlandster

+0

@Olandlandster DB 구조와 보안 규칙이 없으므로 사용자, 중재자 및 관리자와 같은 고유 한 스키마를 만들 수 있습니다. 그냥 기본적인 생각이야. – Ivan

+0

Firebase에는 수퍼 관리자 개념이 없습니다. 모든 사용자는 모든 다른 모든 사용자와 같습니다. 하지만 구현 한 규칙에 따라 다른 사용자에게 Firebase에 대한 액세스 권한을 부여 할 수 있습니다. 예를 들어, 각 자식이 uid 키를 가지고 있고 각 uid 노드의 하위 노드에 해당 사용자에 대한 자세한 정보가있는 사용자 노드가 있다고 가정합니다./uid/user_type = "Super"노드를 가질 수 있습니다. 규칙을 사용하면 super_t 사용자 만 해당 노드에 액세스 할 수있게하는 "Super"user_type이없는 모든 사용자에 대한 액세스를 거부 할 수 있습니다. 나는 규칙을 좀더 완전히 이해하기 위해 파이어베이스 (Firebase)와 조금 협력 할 것을 제안한다. – Jay

답변

2

기본적으로 데이터 구조와 소속 보안 규칙에 관한 내용입니다. 시작하려면 user roles 일종의 데이터 구조를 만드십시오. 이 같은 예를 들어

:

{ 
    "data" : { 
     "user1id" : { 
      "name" : "MisterX" 
     }, 
     "user2id" : { 
      "name" : "John Doe" 
     } 
    }, 
    "users" : { 
     "user1id" : { 
      "role" : "admin" 
     }, 
     "user2id" : { 
      "role" : "member" 
     } 
    } 
} 

각 사용자는 role라는 속성이 있습니다.

이제 당신은 바로 액세스 권한을 정의합니다 role 재산의 사용을 보안 규칙을 정의 할 수 있습니다 :

"data" : { 
    "$userid" : { 
     ".read" : true, 
     ".write" : "root.child('users').child(auth.uid).child('role') === 'admin'",  
     } 
    } 

을 경우에는 단지 관리자가 data/userid 노드에 쓸 수 있습니다 위. 이것을 원하는 모든 다른 노드에 적용 할 수 있습니다.

2

사용자 지정 사용자 특성 사용을 고려하십시오. admin.auth().setCustomUserClaims(uid, {admin: true})

:

https://firebase.google.com/docs/auth/admin/custom-claims

당신은 생성시에 사용자의 관리자 역할을 설정합니다 : 그것은 사용자가 모든 인증 요청에 관리자 인 경우 조회하는 실시간 데이터베이스를 사용하는 것보다 더 효율적이고 저렴

ID 토큰 새로 고침 후 클라이언트에 전달할 수 있습니다.

{ 
    "rules": { 
    "adminContent": { 
     ".read": "auth.token.admin === true", 
     ".write": "auth.token.admin === true", 
    } 
    } 
} 

당신이 규칙을 사용하지 않거나 중포 기지 RTDB는 다음 중포 기지를 통해 ID 토큰에서 구문 분석하여 백엔드에 그것을 적용 할 경우

currentUser.getIdToken(true)

그럼 당신은 단순히 규칙을 적용 할 수 있습니다 Admin SDK :

// Verify the ID token first. 
admin.auth().verifyIdToken(idToken).then((claims) => { 
    if (claims.admin === true) { 
    // Allow access to requested admin resource. 
    } 
}); 
+0

Firebase SDK가 필요합니다. Firebase 콘솔을 사용하지 않고 사용자를 편집하려면 백엔드가 아니십니까? – Ivan