Ich habe eine Firebase-Datenbank mit den folgenden Regeln:Firebase Datenbank Regeln und PERMISSION_DENIED Fehler
{
"rules": {
"messages": {
"$message": {
".read": "true",
".write": "newData.child('uid').val() === auth.uid"
}
}
}
}
Die Datenstruktur sieht wie folgt aus:
ich, ohne ein Problem, um es schreiben , aber wenn ich versuche zu lesen, erhalte ich den folgenden Fehler:
Error: permission_denied at /messages: Client doesn't have permission to access the desired data.
Ich habe die Firebase-Dokumentation gelesen, und meine Struktur sieht genauso aus wie die angegebenen Beispiele. Kann mir bitte jemand sagen, was damit nicht stimmt?
Bitte beachten Sie: das Verschieben der Leserregel unter "Nachrichten" behebt das Problem, ist aber nicht die gewünschte Lösung, da ich eine Regel basierend auf den Nachrichtendaten (ähnlich der Schreibregel) schreiben möchte Grundregel arbeiten. Ich möchte mit einer Regel wie diese am Ende:
{
"rules": {
"messages": {
"$message": {
".read": "data.child('uid').val() === auth.uid",
".write": "newData.child('uid').val() === auth.uid"
}
}
}
}
hmmm .. Ich begann mit einer Struktur wie dieser, aber mein Problem ist, dass ich zwei Anwendungsfälle habe; Eine, bei der ein Benutzer nur seine eigenen Nachrichten sehen kann, und zwei, bei denen ein Administrator alle Nachrichten sehen kann. Die Admin-Abfrage muss in der Lage sein, nach Attributen gefiltert zu werden, z. B. ob eine Nachricht geöffnet oder geschlossen ist. Als ich dies mit einer verschachtelten Struktur versuchte, stellte ich fest, dass das Schreiben der Admin-Abfrage unmöglich war (zu viel Verschachtelung). Klingt wie ich bin zurück zum Zeichenbrett ... :-( –
So kann nur der Admin alle Nachrichten sehen? Und so ein Benutzer kann nur ihre Nachrichten sehen? – Callam
Ja das ist richtig.Ich habe ein Token, das ich identifizieren kann admin Benutzer mit. Das Problem ist das Strukturieren der Daten, so dass ich sie abfragen kann und Benutzer ihre eigenen Nachrichten lesen können. –