Sök…


Anmärkningar

Firebase Realtime-databasregler avgör vem som har läst och skrivåtkomst till din databas, hur dina data är strukturerade och vilka index som finns. Dessa regler levereras på Firebase-servrarna och verkställs automatiskt hela tiden. Varje läs- och skrivförfrågan kommer endast att slutföras om dina regler tillåter det. Som standard är dina regler inställda på att endast autentiserade användare kan läsa och skriva åtkomst till din databas. Detta är för att skydda din databas från missbruk tills du har tid att anpassa dina regler eller ställa in autentisering.

Firebase-databasregler har en JavaScript-liknande syntax och finns i fyra typer:

ange bildbeskrivning här

Tillstånd

Att identifiera din användare är bara en del av säkerheten. När du vet vem de är, behöver du ett sätt att kontrollera deras åtkomst till data i din databas. Med Firebase-databasregler kan du kontrollera åtkomst för varje användare. Här är till exempel en uppsättning säkerhetsregler som låter vem som helst läsa sökvägen /foo/ , men ingen att skriva till den:

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

.read och .write regler kaskad, så denna regeluppsättning ger läsåtkomst till all data på väg / foo / såväl som till djupare banor som /foo/bar/baz . Observera att .read och .write regler som tillåter åtkomst åsidosätter andra regler i databasen som inte tillåter åtkomst; med andra ord, alla tillämpliga .read och .write regler skrivs ihop). Så läsåtkomst till /foo/bar/baz skulle fortfarande beviljas i detta exempel även om en regel på banan /foo/bar/baz utvärderas till falsk.

Firebas-databasreglerna innehåller inbyggda variabler och funktioner som låter dig hänvisa till andra sökvägar, tidstämplar på serversidan, autentiseringsinformation och mer. Här är ett exempel på en regel som ger skrivåtkomst för autentiserade användare till /users/<uid>/ , var är användarens ID erhållet genom Firebase Authentication.

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

Datavalidering

Firebase Realtime-databasen är schemaless. Detta gör det enkelt att ändra saker när du utvecklar, men när din app är redo att distribuera är det viktigt att data förblir konsekvent. .validate innehåller en .validate som låter dig tillämpa valideringslogik med samma uttryck som används för .read och .write regler. Den enda skillnaden är att alla relevanta valideringsregler måste utvärderas till sant för att skrivningen ska tillåtas (med andra ord, alla tillämpliga. .validate ANDAS tillsammans för att tillåta en databasskrivning).

Denna regel säkerställer att data skrivna till /foo/ måste vara en sträng som är mindre än 100 tecken:

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

Valideringsregler har tillgång till alla samma inbyggda funktioner och variabler som .read och .write regler. Du kan använda dessa för att skapa valideringsregler som är medvetna om data någon annanstans i din databas, användarens identitet, servertid och mycket mer.

Definiera databasindex

Firebase Realtime-databasen gör det möjligt att beställa och fråga data. För små datastorlekar stöder databasen ad hoc-fråga, så index krävs vanligtvis inte under utveckling. Innan du startar din app är det dock viktigt att ange index för alla frågor du måste se till att de fortsätter att fungera när din app växer.

Index specificeras med .indexOn regeln. Här är ett exempel på indexdeklaration som skulle indexera höjd- och längdfält för en lista över dinosaurier:

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow