"Apply When" 표현식
Atlas App Services는 각 역할에 대해 정의한 "apply when" 표현식 을 평가하여 역할이 적용되는지 여부를 결정합니다.
이 섹션에는 Realm Mobile Sync를 사용하지 않는 일반적인 시나리오에 대한 "apply when" 표현식의 예가 포함되어 있습니다. 일반적인 Realm Mobile Sync 시나리오에 대한 지침은 Realm Mobile Sync 권한 가이드를 참조하세요.
역할에 표현식을 추가하려면 사용 사례와 가장 근접하게 일치하는 시나리오를 찾은 다음 제공된 템플릿을 복사하여 역할에 붙여넣습니다. collection과 일치하도록 템플릿에서 자리 표시자 값( <angle brackets>
로 표시)을 수정하거나 필요에 맞게 템플릿을 조정해야 할 수 있습니다.
사용자가 문서 소유자인 경우
이 표현식은 활성 사용자의 고유한 id
값이 지정된 필드의 값과 일치하는 경우 true
으)로 평가됩니다. '소유자 ID 필드'는 스키마의 모든 필드가 사용자 객체와의 관계를 나타내는 모든 것을 나타냅니다.
{ "<Owner ID Field>": "%%user.id" }
사용자 ID가 포함된 배열 필드
이 표현식은 활성 사용자의 고유한 id
값이 지정된 배열 필드에 있는 하나 이상의 값과 일치하는 경우 true
으)로 평가됩니다.
{ "<Array Field>": "%%user.id" }
사용자에게 이메일 주소가 있음
활성 사용자의 내부 사용자 객체에 이메일 주소가 등록되어 있는 경우 이 표현식은 true
으)로 평가됩니다.
{ "%%user.data.email": { "%exists": true } }
사용자에게 특정 이메일 주소가 있음
이 표현식은 활성 사용자의 이메일 주소가 지정된 이메일 주소와 일치하는 경우 true
으)로 평가됩니다.
{ "%%user.data.email": "<Email Address>" }
사용자의 이메일 주소가 포함된 필드
이 표현식은 활성 사용자의 이메일 주소가 지정된 필드의 값과 일치하는 경우 true
으)로 평가됩니다.
{ "%%root.email": "%%user.data.email" }
사용자의 이메일 주소가 포함된 배열 필드
활성 사용자의 이메일 주소가 지정된 배열 필드에 있는 하나 이상의 문자열 값과 일치하는 경우 이 표현식은 true
으)로 평가됩니다.
{ "<Array Field>": "%%user.data.email" }
복합 조건을 충족하는 필드
활성 사용자의 ID 값을 전달할 때 함수 isAuthorizedUser
가 true
을 반환하면 이 표현식이 true
로 평가됩니다.
참고
%function
연산자를 사용하여 JSON 표현식에서 모든 Atlas 함수를 호출할 수 있습니다.
{ "%%true": { "%function": { "name": "isAuthorizedUser", "arguments": ["%%user.id"] } } }
CRUD 권한
App Services는 역할의 권한 구성을 사용하여 활성 사용자가 문서를 삽입하거나 삭제할 수 있는지 여부와 문서에서 읽고 쓸 수 있는 필드를 결정합니다.
이 섹션에는 일반적인 시나리오에 대한 역할을 정의하는 템플릿이 포함되어 있습니다. 역할에 권한 집합을 적용하려면 사용 사례와 가장 일치하는 시나리오를 찾습니다. 필드 권한, 문서 권한 및/또는 역할의 권한 표를 제공된 스크린샷과 일치하도록 업데이트하거나 제공된 템플릿을 복사하여 collection의 고급 모드 구성에 붙여넣습니다. 템플릿의 자리 표시자 값( <angle brackets>
로 표시)을 필요에 맞게 수정해야 합니다.
역할이 모든 필드를 읽을 수 있지만 쓸 수는 없습니다.
역할이 모든 필드를 읽을 수 있도록 하려면 문서 수준 read
필드를 true
로 설정하고 write
필드를 false
로 설정합니다.
![]() |
|
역할이 모든 필드를 읽고 쓸 수 있음
역할이 모든 필드를 읽거나 쓸 수 있도록 허용하려면 문서 수준 write
필드를 true
로 설정합니다. 문서 수준 쓰기에는 읽기 권한이 필요하므로 역할은 모든 필드를 읽을 수 있습니다.
![]() |
|
역할은 모든 필드를 읽고 특정 필드에 쓸 수 있습니다.
역할이 모든 필드를 읽을 수 있도록 하려면 문서 수준 read
필드를 true
로 설정하고 write
필드를 false
로 설정합니다. 역할이 쓸 수 있는 필드를 지정하려면 fields
문서에 포함된 필드 구성 문서에서 write
필드를 true
로 설정합니다.
![]() |
|
이 역할은 모든 필드를 읽고 쓸 수 있지만 새 문서를 삽입할 수는 없습니다.
역할이 모든 필드를 읽거나 쓸 수 있도록 허용하려면 문서 수준 write
필드를 true
로 설정합니다. 문서 수준 쓰기에는 읽기 권한이 필요하므로 역할은 모든 필드를 읽을 수 있습니다.
역할이 새 문서를 삽입하지 못하도록 하려면 문서 수준 insert
필드를 false
로 설정합니다.
![]() |
|
역할이 특정 필드에 쓸 수 없음
역할이 지정한 필드를 제외한 모든 필드에 쓸 수 있도록 허용하려면 문서 수준 read
필드를 true
로 설정합니다. fields
문서에서 해당 필드 수준 write
필드를 false
로 설정하고 read
필드를 true
로 설정합니다. 마지막으로 additional_fields.write
필드를 true
로 설정합니다.
![]() |
|
고급 역할 패턴
이 섹션에서 설명하는 사용 사례에서는 App Services UI의 기본 컬렉션 규칙 편집기에서 지원하지 않는 고급 기능을 사용해야 합니다. 이 템플릿을 사용하려면 고급 모드로 변환 하거나 App Services CLI를 사용하여 collection 규칙 구성을 가져옵니다.
삽입 전용 역할
역할이 새 문서를 삽입할 수 있도록 허용하되 그렇지 않으면 데이터를 읽거나 수정하지 못하도록 하려면 insert
를 true
로 설정하고 다음 경우에만 true
로 평가되는 규칙 표현식 으로 문서 수준 write
값을 설정합니다. 작업 이전에는 문서가 존재하지 않았습니다.
{ "name": "insertOnly", "apply_when": <JSON Expression>, "delete": false, "insert": true, "write": { "%%prevRoot": { "%exists": false } }, "additional_fields": {} }
참고
사용자가 데이터를 읽지 못하도록 하려면 write
에 대한 JSON 표현식을 지정해야 합니다. 문서를 삽입하려면 역할에 문서의 모든 필드에 대한 쓰기 권한도 있어야 합니다. 그러나 write
을(를) true
으)로 직접 설정하면 역할에 읽기 권한도 부여됩니다. JSON 표현식은 역할이 초기 문서 삽입에 대해 읽기 권한만 갖도록 보장합니다.
내장된 문서에 대한 필드 수준 권한
역할이 내장된 문서의 모든 필드가 아닌 일부 필드를 읽거나 쓰도록 허용하려면 내장된 필드의 경로와 일치하는 내장된 문서를 fields
문서에 추가합니다.
{ "name": "canReadEmbeddedField", "apply_when": {}, "delete": true, "insert": true, "fields": { "someEmbeddedDocument": { "fields": { "someEmbeddedField": { "read": true, "write": true } } } }, "additional_fields": {} }
참고
App Services는 해당 필드에 정의된 권한에 관계없이 특정 필드에 정의된 read
및 write
권한을 필드에 포함된 모든 임베디드 필드에 적용합니다.