Ricerca…


Osservazioni

Le regole del database in tempo reale di Firebase determinano chi ha accesso in lettura e scrittura al tuo database, come sono strutturati i tuoi dati e quali indici esistono. Queste regole vivono sui server Firebase e vengono applicate automaticamente in ogni momento. Ogni richiesta di lettura e scrittura sarà completata solo se le tue regole lo consentiranno. Per impostazione predefinita, le regole sono impostate in modo che solo gli utenti autenticati abbiano accesso completo in lettura e scrittura al database. Questo serve a proteggere il tuo database dagli abusi finché non hai tempo di personalizzare le tue regole o impostare l'autenticazione.

Le regole del database Firebase hanno una sintassi simile a JavaScript e sono disponibili in quattro tipi:

inserisci la descrizione dell'immagine qui

Autorizzazione

Identificare il tuo utente è solo una parte della sicurezza. Una volta che sai chi sono, hai bisogno di un modo per controllare il loro accesso ai dati nel tuo database. Le regole del database Firebase ti consentono di controllare l'accesso per ciascun utente. Ad esempio, ecco una serie di regole di sicurezza che consentono a chiunque di leggere il percorso /foo/ , ma nessuno a cui scrivere:

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

.write regole .read e .write sovrappongono, quindi questo .write regole garantisce l'accesso in lettura a tutti i dati su path / foo / così come i percorsi più profondi come /foo/bar/baz . Si noti che le regole .read e .write che consentono l'accesso sovrascriveranno altre regole nel database che non consentono l'accesso; in altre parole tutte le regole applicabili, .read e .write sono ORed insieme). Quindi l'accesso in lettura a /foo/bar/baz sarebbe comunque garantito in questo esempio anche se una regola sul percorso /foo/bar/baz valutata come falsa.

Le regole del database Firebase includono variabili e funzioni integrate che consentono di fare riferimento ad altri percorsi, timestamp sul lato server, informazioni di autenticazione e altro. Ecco un esempio di una regola che concede l'accesso in scrittura per gli utenti autenticati a /users/<uid>/ , dove è l'ID dell'utente ottenuto tramite l'autenticazione Firebase.

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

Convalida dei dati

Il database in tempo reale di Firebase è schematizzato. In questo modo è facile cambiare le cose man mano che si sviluppa, ma una volta che l'app è pronta per la distribuzione, è importante che i dati rimangano coerenti. Il linguaggio delle regole include una regola .validate che consente di applicare la logica di convalida utilizzando le stesse espressioni utilizzate per le regole .read e .write . L'unica differenza è che tutte le regole di convalida rilevanti devono essere valutate in modo vero per consentire la scrittura (in altre parole, tutte le regole valide .validate sono ANDed insieme per consentire una scrittura del database).

Queste regole impongono che i dati scritti in /foo/ devono essere una stringa inferiore a 100 caratteri:

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

Le regole di convalida hanno accesso a tutte le stesse funzioni e variabili .write regole .read e .write . È possibile utilizzarli per creare regole di convalida che siano a conoscenza dei dati altrove nel database, l'identità dell'utente, l'ora del server e molto altro.

Definizione degli indici del database

Il database in tempo reale di Firebase consente di ordinare e interrogare i dati. Per dimensioni di dati di piccole dimensioni, il database supporta query ad hoc, quindi gli indici non sono generalmente necessari durante lo sviluppo. Prima di avviare la tua app, è importante specificare gli indici per tutte le query che devi garantire che continuino a funzionare man mano che la tua app cresce.

Gli indici sono specificati usando la regola .indexOn . Ecco una dichiarazione di indice di esempio che indicizzerebbe i campi di altezza e lunghezza per un elenco di dinosauri:

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow