Couchbase 동기화 게이트웨이의 역할로 동기화 기능 강화하기

동기화 게이트웨이의 역할은 사용자 및 채널보다 사용하기가 더 복잡해 보이기 때문에 간과되는 경우가 많습니다. 그러나 역할은 추상화 계층을 하나 더 제공하며 데이터 모델을 크게 단순화할 수 있습니다. 도시별 레스토랑 리뷰를 공유하는 애플리케이션을 예로 들어 보겠습니다. 진행자, 게스트 사용자 등 사용자마다 다른 권한을 가질 수 있습니다. 이 자습서에서는 동기화 기능 를 사용하여 해당 애플리케이션의 인증된 사용자가 승인, 리뷰 게시 또는 다른 사용자에게 역할을 할당할 수 있도록 허용합니다.

애플리케이션에는 총 3가지 유형의 역할이 있습니다:

  • 레벨 1사용자가 레벨 1 역할은 리뷰를 게시할 수 있지만, 리뷰는 사용자가 레벨 3 역할(예: 진행자)을 공개로 설정합니다.
  • 레벨 2사용자는 운영자의 확인 없이 리뷰를 게시할 수 있습니다. 즉, 사용자는 승인을 받지 않고도 댓글을 게시할 수 있습니다.
  • 레벨 3사용자가 리뷰를 승인하거나 거부할 수 있습니다.시작하겠습니다!

동기화 게이트웨이 다운로드

동기화 게이트웨이를 다운로드하고 파일의 압축을 풉니다:

https://www.couchbase.com/downloads?family=sync-gateway

동기화 게이트웨이 바이너리를 찾을 수 있습니다. bin 폴더에 있는 구성 파일의 예와 예제 폴더로 이동합니다. 폴더를 복사합니다. users-role.json 파일을 프로젝트의 루트에 추가합니다:

다음 섹션에서는 구성 파일을 업데이트하여 사용자와 역할을 만들 수 있도록 합니다.

구성 파일 편집

In 동기화 게이트웨이-config.json를 클릭하고 읽을 DB 개체를 업데이트합니다:

위에서 몇 가지 일이 일어나고 있습니다:

  1. 사용자를 만듭니다. jens 를 사용하여 레벨 1 역할.
  2. 사용자를 만듭니다. andy 를 사용하여 레벨 2 역할.
  3. 사용자를 만듭니다. william 아무런 역할 없이.
  4. 사용자를 만듭니다. traun 를 사용하여 레벨 3 역할.
  5. 3가지 역할을 정의합니다. 사용자와 마찬가지로 역할도 관리 REST API 또는 구성 파일에서 명시적으로 만들어야 합니다.

역할 생성 시 참고 사항

역할을 만드는 가장 쉬운 방법은 위에서 한 것처럼 구성 파일에서 만드는 것입니다.

역할을 만드는 또 다른 방법은 관리자 REST API를 사용하는 것입니다. 애플리케이션에서 해당 역할을 만들 수 있는 엔드포인트를 노출하는 경우 앱 서버에 요청(파란색 화살표)을 보내 역할을 만들고 성공하면 201 Created(녹색 화살표)를 반환하여 역할을 동적으로 만들 수 있습니다.

다음 섹션에서는 세 가지 유형의 문서에 대한 쓰기 및 읽기 작업을 처리하는 동기화 함수를 추가합니다(레스토랑, 리뷰, 프로필).

동기화 기능 추가하기

역할 그리고 사용자 에 대한 액세스 권한을 부여할 수 있습니다. 채널. 사용자에게 역할을 부여하고 해당 역할에 대한 모든 채널 액세스 권한을 상속할 수 있습니다.

채널 액세스는 사용자의 읽기 보안을 결정합니다. 쓰기 보안은 채널을 기반으로 할 수도 있습니다( requireAccess), 사용자/역할을 기반으로 할 수도 있습니다(요구 사용자 그리고 요구 역할) 또는 문서 콘텐츠( throw).

문서에 대한 읽기 및 쓰기 권한은 독립적입니다. 실제로 쓰기 권한은 전적으로 동기화 함수에 의해 제어됩니다. 동기화 함수가 수정본을 거부하지 않는 한, 클라이언트는 모든 문서를 수정할 수 있습니다. 모든 require* 함수는 유효성 검사기 역할을 할 뿐만 아니라 쓰기 액세스 API 역할도 합니다.

동기화 기능으로 많은 채널을 생성하는 것은 매우 흔한 일입니다. 이는 아주 좋은 현상입니다. 하지만 각 사용자를 차례로 채널에 할당하는 것은 번거로울 수 있습니다. 대신 역할을 사용할 수 있습니다!

이를 한 번 더 숙지하면 사용자에게 역할을 부여하고 해당 역할에 대한 채널 액세스 권한을 상속할 수 있습니다.

즉, 역할을 할당하는 것만으로 사용자에게 여러 채널에 대한 액세스 권한을 부여할 수 있습니다. 모든 사용자를 채널에 할당할 필요가 없으므로 매우 강력한 기능입니다. 역할에 채널에 대한 액세스 권한을 부여하고 사용자를 역할에 할당하기만 하면 됩니다.

이를 염두에 두고 다음에서 동기화 기능을 교체하세요. 동기화 게이트웨이-config.json:

현재 상황은 다음과 같습니다:

  1. 다음을 보유한 사용자 레벨 1 역할에 쓰기 권한이 있는 이유는 채널 함수를 호출합니다. 그런 다음 해당 사용자와 레벨 3 이 채널에 액세스할 수 있습니다. 바로 이 부분에서 역할의 힘이 빛을 발합니다. 역할에 액세스 권한을 부여하면 해당 역할을 가진 모든 사용자에게 채널에 대한 액세스 권한을 부여하는 것입니다. 호출 요구 역할 를 입력하면 쓰기 권한이 부여됩니다.
  2. 문서 유형 리뷰 에 의해 생성된 레벨 2 역할: 문서는 문서가 속한 레스토랑과 동일한 채널로 이동해야 합니다. 호출은 요구 역할 를 입력하면 쓰기 권한이 부여됩니다.
  3. 문서 유형 리뷰 에 의해 생성된 레벨 3 역할: 해당 레스토랑의 채널에 문서가 들어가야 합니다. 레벨 3 사용자는 또한 모든 {사용자 이름}-검토 중 채널에 액세스할 수 있습니다. 다른 사용자의 보류 중인 리뷰를 승인/거부할 수 있습니다.

업데이트된 구성 파일로 동기화 게이트웨이를 시작합니다:

이 예에서는 역할의 3가지 주요 기능을 활용하고 있습니다:

  • 채널에 대한 역할 액세스 권한을 부여하고 해당 역할을 가진 모든 사용자에게 간접적으로 액세스 권한을 부여합니다.
  • 요구 역할을 사용하여 쓰기 권한을 부여합니다.
  • 사용자에게 역할 할당하기.

이제 다음 HTTP 요청을 통해 동기화 함수가 예상대로 작동하는지 테스트할 수 있습니다.

다양한 시나리오 실행

시나리오 1

문서 유형 리뷰 에 의해 생성된 레벨 1 사용자: 문서는 {사용자 이름}-검토 중 채널과 레벨 3 역할도 이 채널에 액세스할 수 있어야 합니다.

사용자로 로그인 jens:

새 문서 유형 저장 리뷰 (토큰을 반환된 토큰으로 대체하십시오. 설정-쿠키 헤더):

  • 해당 사용자 확인 jens 채널에 액세스할 수 있습니다. jens-in-review 를 클릭하면 댓글 문서가 그 안에 있습니다.
  • 해당 사용자 확인 traun 채널에 액세스할 수 있습니다. jens-in-review.

이 문서가 속한 채널과 해당 문서에 액세스할 수 있는 역할/사용자를 다음에서 볼 수도 있습니다. 문서 탭을 클릭합니다:

시나리오 2

역할을 사용하여 쓰기 권한 부여하기.

다음 계정으로 로그인 andy 를 클릭하고 로그인 요청에서 반환받은 토큰으로 토큰을 교체합니다.

  • 댓글이 레스토랑 채널에 추가되었는지 확인합니다( 123 이 예에서는).

시나리오 3

사용자에게 역할 할당하기.

다음 계정으로 로그인 traun 를 클릭하고 로그인 요청에서 반환받은 토큰으로 토큰을 교체합니다.

  • 다음 사항을 확인하십시오. william 역할이 있습니다. 레벨 3.
  • 다음 사항을 확인하십시오. william 에 액세스 할 수 있습니다. jens-in-review 채널.

결론

이 튜토리얼에서는 채널과 requireRole을 사용하여 동적으로 유효성을 검사하고 쓰기 작업을 수행하는 방법을 배웠습니다. 또한 역할 API를 사용하여 여러 사용자에게 한 번에 여러 채널을 할당했습니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 제임스 노센티니, 모바일 테크니컬 라이터, Couchbase

제임스 노센티니는 카우치베이스 모바일의 문서를 담당하는 테크니컬 라이터입니다. 이전에는 개발자 지원 담당자로 일했으며 그 전에는 HouseTrip의 프론트엔드 개발자로 일했습니다. 또한 여가 시간에는 raywenderlich.com에 안드로이드 튜토리얼을 작성하는 것을 즐깁니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.