Problemumgehung für die Firebase-Einschränkung "Regeln sind keine Filter"

9

Ich hätte gerne eine Sicherheitsregel, die es jedermann erlaubt, eine Liste von Benutzern zu erhalten und deren Namen zu lesen, aber nur eingeloggten Benutzern erlaubt, ihre eigenen E-Mails anzuzeigen.

Hier ist eine Beispieldatenstruktur:

%Vor%

Ein naive Ansatz für eine Sicherheitsregel könnte Folgendes sein:

%Vor%

Da jedoch auf der Benutzerebene keine Lese-Regel existiert, werden Anfragen zum Lesen der Liste abgelehnt. Das Hinzufügen einer Lese-Regel auf Benutzerebene überschreibt jedoch die E-Mail-Regel und macht jeden untergeordneten Knoten lesbar (siehe Kaskadenregeln im Firebase-Sicherheitshandbuch.

Der Sicherheitsleitfaden weist darauf hin, dass Regeln keine Filter sind , aber bietet nicht viel Anleitung, was man dagegen tun kann.

Soll ich meine User-Entity einfach in PrivateUser und PublicUser aufteilen?

    
Zac 21.01.2016, 02:27
quelle

2 Antworten

1

Eine "Problemumgehung" wäre die Verwendung von Firestore (enthält eine Menge der guten Dinge aus der Firebase Realtime Database, fügt aber weitere Abfrageoptionen hinzu usw.).

In Firestore gibt es keine Beschränkung "Regeln sind keine Filter"!

Sie müssen Ihre Abfrage jedoch so konstruieren, dass nur Objekte zurückgegeben werden, für die Sie Leseberechtigung haben (andernfalls erhalten Sie eine Sicherheitsausnahme).

Hier sind einige Startpunktdokumente:

Sicherheitsregeln: Ссылка

Abfragen: Ссылка

    
KarolDepka 30.11.2017 15:47
quelle
0

Damit jeder eine Liste von Benutzern erhält und deren Namen liest. UND damit angemeldete Benutzer ihre eigenen E-Mails anzeigen können.

  

Zac sagt: Denken Sie zuerst über den Zugriff nach, und dann um Objekte zu modellieren, die beide sind ganz öffentlich oder ganz privat.

Typ 1:

%Vor%

Typ 2:

%Vor%     
Nik 16.07.2016 18:29
quelle