수색…


비고

Firebase Realtime Database Rules는 데이터베이스에 대한 읽기 및 쓰기 액세스 권한을 가진 사용자, 데이터 구성 방법 및 존재하는 인덱스를 결정합니다. 이 규칙은 Firebase 서버에 저장되며 항상 자동으로 시행됩니다. 모든 읽기 및 쓰기 요청은 규칙에서 허용하는 경우에만 완료됩니다. 기본적으로 인증 된 사용자 만 데이터베이스에 대한 전체 읽기 및 쓰기 액세스를 허용하도록 규칙이 설정됩니다. 이것은 규칙을 사용자 정의하거나 인증을 설정할 때까지 데이터베이스를 악용으로부터 보호하기위한 것입니다.

Firebase 데이터베이스 규칙은 JavaScript와 유사한 구문을 가지며 4 가지 유형이 있습니다.

여기에 이미지 설명을 입력하십시오.

권한 부여

사용자를 식별하는 것은 보안의 일부일뿐입니다. 그들이 누구인지 알게되면 데이터베이스의 데이터에 대한 액세스를 제어하는 ​​방법이 필요합니다. Firebase 데이터베이스 규칙을 사용하여 각 사용자의 액세스를 제어 할 수 있습니다. 예를 들어, 다음은 누구나 경로 /foo/ 를 읽을 수있는 보안 규칙 집합이지만 쓰기 권한은 없습니다.

{
  "rules": {
    "foo": {
      ".read": true,
      ".write": false
    }
  }
}

.read.write 규칙은 캐스 캐 이드 .write ruleset은 / foo / 경로의 모든 데이터와 /foo/bar/baz 와 같은 더 깊은 경로에 대한 읽기 액세스 권한을 부여합니다. 액세스를 허용하는 .read.write 규칙은 액세스를 허용하지 않는 데이터베이스의 다른 규칙보다 우선합니다. 즉, 적용 가능한 모든 .read.write 규칙은 함께 OR 연산됩니다. 그래서 액세스 읽기 /foo/bar/baz 경로에서 규칙 경우에도 여전히이 예에서 부여 할 것을 /foo/bar/baz false로 평가했다.

Firebase 데이터베이스 규칙에는 다른 경로, 서버 측 타임 스탬프, 인증 정보 등을 참조 할 수있는 내장 변수와 함수가 포함되어 있습니다. 다음은 인증 된 사용자에 대한 쓰기 권한을 /users/<uid>/ 부여하는 규칙의 예입니다. 여기서는 Firebase 인증을 통해 얻은 사용자의 ID입니다.

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

데이터 유효성 검사

Firebase Realtime Database는 스키마가 없습니다. 이렇게하면 개발할 때 항목을 쉽게 변경할 수 있지만 일단 앱을 배포 할 준비가되면 데이터 일관성 유지가 중요합니다. 규칙 언어는 포함 .validate 당신이 사용하는 것과 동일한 식을 사용하여 유효성 검사 논리를 적용 할 수 있습니다 규칙 .read.write 규칙을. 유일한 차이점은 쓰기가 허용되도록 모든 관련 유효성 검사 규칙을 true로 평가해야한다는 것입니다 (즉, 적용 가능한 모든 .validate 규칙이 .validate 되어 데이터베이스 쓰기가 .validate ).

이 규칙은 /foo/ 쓰여지는 데이터가 100 자 미만의 문자열이어야한다고 강요합니다 :

{
  "rules": {
    "foo": {
      ".validate": "newData.isString() && newData.val().length < 100"
    }
  }
}

유효성 검사 규칙은 .read.write 규칙과 동일한 모든 기본 제공 함수 및 변수에 액세스 할 수 있습니다. 이를 사용하여 데이터베이스의 다른 위치, 사용자의 신원, 서버 시간 등을 인식하는 유효성 검사 규칙을 만들 수 있습니다.

데이터베이스 인덱스 정의

Firebase Realtime Database는 데이터의 순서 지정 및 질의를 가능하게합니다. 작은 데이터 크기의 경우 데이터베이스는 임시 쿼리를 지원하므로 일반적으로 인덱스는 개발 중에 필요하지 않습니다. 그러나 앱을 시작하기 전에 앱 성장에 따라 계속 작동하도록 보장해야하는 검색어에 대해 색인을 지정하는 것이 중요합니다.

인덱스는 .indexOn 규칙을 사용하여 지정됩니다. 다음은 공룡 목록의 높이 및 길이 필드를 색인화하는 색인 ​​색인 선언의 예입니다.

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow