동기화 게이트웨이 시리즈의 이전 블로그에서는 다음과 같은 내용을 살펴보았습니다. 사용자 인증 및 권한 부여 방법 를 동기화 게이트웨이의 일부 기능을 통해 애플리케이션에 추가할 수 있습니다. 이 시리즈를 바탕으로 이제 문서 유형의 유효성을 검사하는 방법을 살펴보겠습니다. 동기화 게이트웨이 를 사용하여 모바일 클라이언트 측에서 특정 사용자에 대한 접근성을 결정할 수 있습니다. 이는 다음 블로그에서 Couchbase Mobile이 읽기 측 보안을 수행하는 방법에 대한 채널 토론으로 이어질 것입니다. 쓰기 측 보안의 경우, 알려진 사용자로부터 들어오는 특정 문서를 백엔드 데이터베이스에 기록할 수 있도록 하는 동기화 기능의 주요 방법을 살펴보겠습니다.
동기화 기능
예를 들어 데이터베이스에 유효성 검사 코드에서 참조할 유형 키가 있는 문서가 하나 또는 여러 개 있다고 가정해 보겠습니다. 동기화 게이트웨이의 핵심은 동기화 함수의 구현 로직이며, 아래에서는 애플리케이션에서 사용자의 접근성 제어를 위해 문서 유형을 확인하는 방법을 살펴봅니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
"동기화" : ' 함수(doc, oldDoc) { 만약 (doc.유형 == "친구") { //새 친구 문서 처리 요구 사용자(doc.소유자); //친구 소유자 액세스(doc.친구, "항목-"+doc.소유자); 채널("비공개-"+doc.소유자); 액세스(doc.소유자, "비공개-"+doc.소유자) } else 만약 (doc.유형 == "차량"){ 요구 사용자(doc.소유자); //차량 소유자 문서 액세스(doc.차량, "항목-"+doc.소유자); 채널("비공개-"+doc.소유자); 액세스(doc.소유자, "비공개-"+doc.소유자) } else{ 요구 사용자(doc.소유자) 채널("항목-"+doc.소유자); } }' |
문서의 '유형' 필드를 사용하면 문서가 나타내는 특정 값으로 구분할 수 있습니다. 문서 유형이 '학교', '차량' 또는 '친구'를 나타내는 경우 동기화 함수 내에서 스위치 문을 추가하여 동기화 함수 내에서 다른 문서 유형을 다른 방식으로 처리할 수 있는 방법을 캡처할 수 있습니다. 먼저 문서 유형을 확인하여 '친구' 유형인지 확인한 다음 문서 소유자 속성이 현재 인증된 사용자 ID와 일치하는지 '요구 사용자()' 메서드를 호출합니다. 소유자 속성이 현재 인증된 사용자와 일치하면 'items-doc.owner' 채널을 통해 모든 친구에게 문서에 대한 액세스 권한을 부여합니다. 이는 기본적으로 사용자가 초대한 친구 목록은 사용자 본인에게만 비공개이므로 다른 사람이 볼 수 없음을 의미합니다.
'기타' 조항은 친구 또는 차량의 문서가 아닌 경우입니다, 를 입력하면 학교의 항목 문서가 되고 소유자 속성이 현재 인증된 사용자 ID와 일치하는지 다시 한 번 확인합니다. 이전과 동일합니다, 항목 소유자 속성의 'items-' 채널에 항목을 추가하고 해당 사용자에게 해당 채널에 대한 액세스 권한을 부여합니다.
|
1 2 3 |
else{ throw({금지됨: "유효하지 않음 문서 유형"}); } |
'requireUser()' 메서드 대신, 이를 이제 기본적으로 목록에 새 항목을 작성하려면 항목을 추가하려는 특정 사용자의 항목 채널에 대한 액세스 권한이 있어야 하는 'requireAccess("items-"+doc.owner)' 메서드가 추가되었습니다.
|
1 |