2016-10-09 8 views
1

Ich habe diese DB-Struktur in Firebase:Firebase Sicherheit Kindknoten

[bets] 
     -KTd9VKWJwHd_L6j_oAF 
     date 
     team1 
     etc 
     -KTdCc7uVmueNtcYzU1m 
     date 
     team1 
     etc 
    [users] 

ich jetzt versuchen, Regeln zu schreiben Firebase Benutzer nur zu erlauben, Wetten zugewiesen sie zu lesen. Aber ich habe sofort Probleme bekommen. Ich habe diese sehr grundlegende Regeln:

{ 
    "rules": { 
    "bets": { 
     "$bet": { 
     ".read": true, 
     ".write": true 
     } 
    } 
    } 
} 

Wenn ich versuche, /bets zu besuchen (wo ich eine Liste von Wetten angezeigt) ich den Fehler geworfen bekommen:

Error: permission_denied at /bets: Client doesn't have permission to access the desired data. 

Wenn ich stattdessen die .read und .write platzieren unter bets anstelle von $bet funktioniert es gut. Was vermisse ich?

Antwort

3

Firebase wertet die Leseberechtigung an dem Ort aus, an dem Sie einen Listener anhängen. Sie hängen einen Listener an /bets an, so lehnt es den Listener ab, da Sie keine Leseberechtigung für /bets haben.

Wenn Sie Leseberechtigung zu /bets haben, können Sie auch alles darunter lesen. Das bedeutet, dass Sie die Sicherheitsregeln der Firebase-Datenbank nicht zum Filtern von Daten verwenden können.

Siehe Abschnitt rules are not filters in der Firebase-Dokumentation. Oder suchen Sie nach Firebase questions mentioning "rules are not filters" hier und Sie werden sehen, das ist ein häufiger Fehler für Entwickler.

Verwandte Themen