Szukaj…


Uwagi

Reguły bazy danych Firebase Realtime określają, kto ma dostęp do odczytu i zapisu do twojej bazy danych, jak twoja struktura danych i jakie indeksy istnieją. Reguły te działają na serwerach Firebase i są egzekwowane automatycznie przez cały czas. Każde żądanie odczytu i zapisu zostanie zrealizowane tylko, jeśli pozwalają na to Twoje reguły. Domyślnie reguły są ustawione tak, aby umożliwić tylko uwierzytelnionym użytkownikom pełny dostęp do odczytu i zapisu do bazy danych. Ma to na celu ochronę bazy danych przed nadużyciami, dopóki nie będziesz mieć czasu na dostosowanie swoich reguł lub skonfigurowanie uwierzytelniania.

Reguły bazy danych Firebase mają składnię podobną do JavaScript i występują w czterech typach:

wprowadź opis zdjęcia tutaj

Upoważnienie

Identyfikacja użytkownika jest tylko częścią bezpieczeństwa. Kiedy wiesz, kim oni są, potrzebujesz sposobu kontrolowania ich dostępu do danych w bazie danych. Reguły bazy danych Firebase pozwalają kontrolować dostęp dla każdego użytkownika. Na przykład, oto zestaw reguł bezpieczeństwa, który pozwala każdemu odczytać ścieżkę /foo/ , ale nikt nie może do niej napisać:

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

.read reguł .read i .write , więc ten .write reguł zapewnia dostęp do odczytu do dowolnych danych w ścieżce / foo /, a także do głębszych ścieżek, takich jak /foo/bar/baz . Zauważ, że .read i .write , które zezwalają na dostęp, .read inne reguły w bazie danych, które nie zezwalają na dostęp; innymi słowy wszystkie obowiązujące .read i .write.write razem). Tak więc dostęp do odczytu do /foo/bar/baz byłby nadal zapewniony w tym przykładzie, nawet jeśli reguła na ścieżce /foo/bar/baz na false.

Reguły bazy danych Firebase obejmują wbudowane zmienne i funkcje, które pozwalają odwoływać się do innych ścieżek, znaczników czasowych po stronie serwera, informacji uwierzytelniających i innych. Oto przykład reguły, która zapewnia dostęp do zapisu dla uwierzytelnionych użytkowników do /users/<uid>/ , gdzie jest identyfikator użytkownika uzyskany przez uwierzytelnianie Firebase.

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

Walidacji danych

Baza danych Firebase Realtime jest bez schematu. Ułatwia to zmienianie rzeczy w miarę rozwoju, ale gdy aplikacja jest gotowa do dystrybucji, ważne jest, aby dane były spójne. Język reguł zawiera .validate regułę, która pozwala na zastosowanie logiki sprawdzania poprawności przy użyciu tych samych wyrażeń, co w przypadku .read i .write . Jedyną różnicą jest to, że wszystkie odpowiednie reguły sprawdzania poprawności muszą mieć wartość true, aby zezwolić na zapis (innymi słowy, wszystkie obowiązujące reguły .validate są połączone AND, aby umożliwić zapis bazy danych).

Reguły te wymuszają, aby dane zapisane w /foo/ musiały zawierać mniej niż 100 znaków:

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

Reguły sprawdzania poprawności mają dostęp do wszystkich tych samych wbudowanych funkcji i zmiennych, co .read i .write . Możesz ich użyć do stworzenia reguł sprawdzania poprawności, które uwzględniają dane w innym miejscu w bazie danych, tożsamość użytkownika, czas serwera i wiele więcej.

Definiowanie indeksów bazy danych

Baza danych Firebase Realtime umożliwia zamawianie i wyszukiwanie danych. W przypadku małych rozmiarów danych baza danych obsługuje zapytania ad hoc, więc indeksy nie są generalnie wymagane podczas programowania. Jednak przed uruchomieniem aplikacji ważne jest, aby określić indeksy dla wszystkich zapytań, aby upewnić się, że będą one nadal działać w miarę rozwoju aplikacji.

Indeksy są określane przy użyciu reguły .indexOn . Oto przykładowa deklaracja indeksu, która indeksowałaby pola wysokości i długości listy dinozaurów:

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow