UI 보안 설정

앱 보안의 일환으로, 페이지 및 UI 요소(위젯 또는 위젯 일부)에 보안을 설정할 수 있습니다. UI 보안은 사용자가 어떤 요소를 보는지(또는 스크린 리더를 통해 듣는지) 여부를 결정합니다.

앱 UI 보안 설정하는 방법

App Maker를 사용하면 다음 두 가지 접근 방식 중 하나를 사용하여 앱 UI 보안을 설정할 수 있습니다.

  • 페이지 보안 설정 — 페이지 보안을 사용하여 사용자가 볼 수 있는 페이지를 제어합니다. 속성 편집기(edit)의 보안에서 역할 또는 스크립트 액세스 권한을 각 페이지에 적용합니다.
  • UI 요소 보안 설정visible 속성을 사용하여 사용자가 페이지에서 볼 수 있는 요소를 제어합니다. 공개 속성은 위젯 및 복합 위젯 일부에 사용할 수 있습니다. 속성 편집기(edit)의 디스플레이에서 true(공개) 또는 false(비공개)로 확인되는 UI 요소의 결합 표현식을 정의합니다.

페이지 보안 설정

페이지 보안을 설정하여 사용자가 액세스할 수 있는 앱 페이지를 제어합니다.

페이지 보안 설정 이유

  • 민감한 정적 정보에 대한 액세스 제한 — 경우에 따라 페이지에 특정 사용자만 볼 수 있어야 하는 정적 정보가 표시될 수 있습니다. 예를 들어 페이지에 출시 이전의 개발 제품에 대한 중요한 정보가 표시될 수 있습니다.
  • 페이지가 필요한 사용자로 페이지 사용 제한 — 특정 사용자 집합이 다른 작업을 하는 경우, 페이지를 사용하는 사용자 집합으로 페이지 사용을 제한하는 것이 합리적입니다. 비관리자에게 관리자가 사용자는 페이지에 대한 액세스 권한을 부여할 이유가 없습니다.
  • 페이지에 보안 설정하면 성능상의 이점이 있음 — 사용자가 페이지에 액세스할 수 있는지 여부를 제어하면 성능상의 이점이 있습니다. App Maker가 페이지 및 데이터에 액세스하지 않아야 하는 사용자에게 불필요한 데이터 및 관련 데이터를 가져올 필요가 없는 경우 적은 데이터가 이동합니다.

페이지에 대한 액세스 권한 설정

페이지 보안은 액세스 권한을 사용합니다. 페이지에 사용할 수 있는 액세스 권한은 관리자만, 전체, 역할, 스크립트입니다.

  1. App Maker를 엽니다.
  2. 왼쪽 사이드바에서 권한을 설정할 페이지를 클릭합니다.
  3. 속성 편집기(edit)의 보안 아래 있는 목록에서 페이지에 대한 액세스 권한을 선택합니다.

App Maker가 페이지에 대한 액세스를 제어하는 방법

  • 검색 — App Maker는 페이지 권한을 사용하여 사용자의 특정 페이지를 검색할지 여부를 결정합니다. 해당 사용자가 페이지 액세스 권한이 없는 경우, App Maker는 특정 페이지를 검색하지 않습니다. App Maker 앱은 웹 앱이므로 App Maker는 해당 페이지의 존재 여부를 인식하지 않습니다. 따라서 페이지를 찾을 수 없음 오류(HTTP 404)로 응답합니다. App Maker는 메뉴에 페이지를 나열하지 않습니다. 특정 사용자의 페이지 액세스를 제어하기 위해 페이지 링크를 생략하도록 앱의 탐색을 설계할 수도 있습니다.
  • 보기 — 페이지가 검색되지 않으면 사용자가 페이지 리더로 페이지를 보거나 읽을 수 없습니다.
  • DOM — App Maker가 특정 사용자의 액세스를 제어하는 페이지는 DOM에도 없습니다.

페이지 참조

페이지에 대한 참조에는 중요한 특징이 있습니다.

  • 앱의 페이지에 대한 참조 — 메뉴에서 앱의 페이지를 참조할 때(예: 결합 표현식 @pages 또는 스크립트에서 app.pages에 대한 참조 사용) App Maker는 사용자가 액세스해야 하는 페이지만 나열합니다.
  • 페이지에 대한 링크 — 페이지와 연결되는 UI 요소의 공개 상태를 제어할 수 있습니다(예: 링크).
  • 페이지의 URL — 사용자는 액세스 권한이 없는 페이지의 URL을 다른 사용자로부터 얻을 수 있습니다. 한편, 사용자가 URL을 북마크에 추가하면 앱의 해당 부분에 액세스 할 수 없습니다.
  • DOM의 페이지에 대한 참조 — 앱의 페이지가 다른 페이지를 참조할 수 있으므로(예: 링크 사용) 능숙한 사용자는 DOM에서 사용자가 액세스할 수 없는 페이지에 대한 참조를 찾을 수 있습니다.

UI 요소의 공개 상태 제어

visible 속성을 사용하여 페이지의 UI 요소(위젯 또는 위젯 일부)를 특정 사용자에게 표시할지 여부를 제어할 수 있습니다. 공개 상태를 제어하는 이유는 다음과 같습니다.

  • 관련성 — 일부 콘텐츠 또는 탐색 제어가 특정 상황 또는 특정 사용자와 관련이 없는 경우 페이지에서 사용하지 않습니다. 예를 들어 레코드 편집 링크는 레코드가 존재하는 경우에만 적합합니다. 레코드가 존재하지 않는 경우 링크를 숨길 수 있습니다. 공개 상태는 데이터를 기반으로 할 수 있습니다.
  • 보안 — 특정 사용자가 특정 UI 요소를 사용하면 안되는 경우 해당 사용자에 대해 요소를 숨길 수 있습니다.

부울로 평가되는 결합 표현식 작성

보안을 위해 보안 조치를 호출하고 true 또는 false의 부울 결과로 평가되는 UI 요소의 visible 속성에 대한 결합 표현식을 작성합니다. 다음 접근 방식을 사용할 수 있습니다.

  • 결합 표현식에서 역할의 구성원이 액세스해야 하는 역할을 참조합니다. 다음 예에서는 Managers 그룹의 구성원에게 액세스 권한을 부여합니다.

    (@user.roles).indexOf('Managers') > -1

  • 서버 스크립트에서 메소드를 호출하는 클라이언트 스크립트에서 호출이 이루어집니다. 서버 스크립트에서 메소드를 사용하여 모든 기준(예: 역할 멤버십 또는 데이터)을 기반으로 공개 상태를 결정합니다. 서버 메소드는 값을 반환할 수 있는 클라이언트 메소드에 true 또는 false를 반환할 수 있습니다.

자동 유형 변환 사용

App Maker는 visible 속성의 부울 결과가 필요합니다. 결합 표현식에서 true 또는 false를 반환하는 경우 App Maker는 제공된 값을 사용합니다.

visible 속성의 결합 표현식은 Number 또는 String 유형의 필드에 결합하거나 숫자 또는 문자열을 반환하는 함수를 호출할 수 있습니다. 이 경우 App Maker는 유형 변환을 수행하여 숫자 또는 문자열을 부울 값으로 변환합니다. Date 유형의 필드에는 결합할 수 없습니다. 함수가 날짜를 반환하는 경우 날짜는 문자열로 처리됩니다.

수행된 변환은 결합 변환기 numToBool()strToBool()에서 사용된 것과 같습니다. 결합 변환기는 필요하지 않지만 사용할 수 있습니다.

숫자에 대한 자동 유형 변환과 numToBool()을 통해 수행된 자동 유형 변환은 자바스크립트 유형 변환과 일치합니다. 특정 사례(undefined, null, NaN)에 대한 유형 변환도 자바스크립트 유형 변환과 일치합니다(모두 false로 변환).

그러나 문자열에 대한 유형 변환과 strToBool()을 통해 수행된 유형 변환은 자바스크립트 유형 변환과 일치하지 않습니다.

이에 관하여 다음 사항을 숙지하시기 바랍니다.

필드 유형 True(공개) False(비공개)
부울

(자바스크립트와 일치)
값: 체크박스가 선택됨
true
값: 체크박스가 선택되지 않음
false
숫자

(자바스크립트와 일치)
1, 1.0
False 아래 나열되지 않은 다른 모든 값(예: 2, 208.1, -7, Infinity, -Infinity)
0, -0, 0.0, -0.0
문자열

(자바스크립트와 불일치)
"true", "True", "TRUE"... (대소문자 구분하지 않음) "false", "False", "FALSE"... (대소문자 구분하지 않음)
True 아래 나열되지 않은 다른 모든 값(예: 'employee' 또는 'admin')

위젯 계층 구조의 공개 상태 제어

위젯은 계층 구조인 경우가 많습니다. 양식에는 제목, 데이터를 입력하거나 선택할 수 있는 텍스트 상자 등이 있습니다. 전체 위젯, 위젯의 일부 또는 둘 모두의 공개 상태를 제어할 수 있습니다.

계층 구조에서 visible 속성의 값이 false이면 계층 구조에서 해당 UI 요소와 그 아래 있는 모든 UI 요소가 표시되지 않습니다.