Die Beispiele in den Firebase-Dokumenten setzen eine manuelle Aktualisierung der Firebase-Sicherheitsregeln voraus. Wie können Sicherheitsregeln programmgesteuert geändert werden, um echte kollaborative Anwendungen zu unterstützen? In dem Anwendungsfall, den ich in Betracht ziehe, besteht die Anforderung darin, dass ein Benutzer in der Lage ist, andere Benutzer zur Zusammenarbeit/Freigabe ausgewählter Daten einzuladen und den Zutritt zu den Mitarbeitern gewähren/entziehen zu können. Wie kann dies mit Firebase erreicht werden?Wie programmgesteuert Sicherheitsregeln in Firebase ändern?
Antwort
Sie sollten Ihre Sicherheitsregeln nicht programmatisch ändern. Sie sollten sie als Code betrachten und sie nur zur Bereitstellungszeit ändern.
Wenn Sie versuchen zu ändern, was Benutzer tatsächlich tun dürfen, sollten Sie dies tun, indem Sie Sicherheitsregeln schreiben, die von Daten in Ihrem Firebase abhängen.
Angenommen, Sie möchten den Zugriff auf ein Datenelement auf Benutzer in einer bestimmten Gruppe beschränken. Anstatt die Sicherheitsregeln jedes Mal zu ändern, wenn sich die Gruppenmitgliedschaft ändert, speichern Sie die Gruppe einfach in Firebase und lassen Ihre Sicherheitsregeln prüfen, ob der aktuelle Benutzer in dieser Gruppe ist, bevor Sie den Zugriff erlauben.
Auf diese Weise wird den Benutzern bei jeder Änderung der Gruppenmitgliedschaft automatisch Zugriff auf die Daten gewährt, die sie sehen dürfen.
Ein komplexeres Beispiel für Sicherheitsregeln finden Sie in der Datei rules.json in Firefeed.
Aber wie würden dynamisch hinzugefügte Datensätze behandelt?
Sie würden dies tun, indem Sie den untergeordneten Knoten $
verwenden. Es sieht etwa so aus:
Hier meine Datenbank ist
users
- userIDHere
- name: John Doe
- whatever: who knows
Und Sie würden dies auf jeden Benutzer festgelegten Regeln, indem Sie:
{
"rules": {
"users": {
"$user": {
// whatever rules you want here, and you can reference $user to get the user's id.
}
}
}
}
Hoffnung ist das, was Sie fragen, und die Hoffnung das hilft!
- 1. Sicherheitsregeln mit Firebase
- 2. Firebase Sicherheitsregeln mit Wildcards
- 3. Firebase Sicherheitsregeln Erlaubnis verweigert
- 4. Firebase Sicherheitsregeln Probleme
- 5. Firebase Sicherheitsregeln: .indexOn eindeutige IDs
- 6. Firebase Erlaubnis mit Sicherheitsregeln verweigert
- 7. Firebase-Sicherheitsregeln: Alle Einzelobjekte lesen?
- 8. Firebase Sicherheitsregeln für nodejs App
- 9. Firebase Sicherheitsregeln für untergeordnete Elemente in Arrays
- 10. Sicherheitsregeln basierend auf Zeitlimit in Firebase
- 11. Firebase: Sicherheitsregeln für eine gemeinschaftliche App
- 12. Wann werden die Sicherheitsregeln für Firebase überprüft?
- 13. Firebase: Festlegen von Sicherheitsregeln in Abhängigkeit von Benutzerrollen
- 14. Muss ich Sicherheitsregeln in Firebase ändern, wenn ich keine Datenbank verwende?
- 15. Sicherheitsregeln verursachen immer "Berechtigung verweigert"
- 16. Erhalten Sie E-Mail von Benutzer angemeldet (Firebase Sicherheitsregeln)
- 17. Firebase 3.0 Sicherheitsregeln - Lassen Sie keine anonymen Kinder schieben
- 18. Sicherheitsregeln mit dynamischen Pfaden
- 19. Wie layout_gravity in Firebase ändern populateView
- 20. DotNetOpenAuth "Vererbung Sicherheitsregeln verletzt"
- 21. Wie programmgesteuert Thema in OctoberCMS ändern?
- 22. Wie Folienlayout programmgesteuert in PowerPoint ändern?
- 23. Wie "MediaLinkPrefix" programmgesteuert in Sitecore ändern?
- 24. Wie programmgesteuert Volumen in Ubuntu zu ändern
- 25. Sprache programmgesteuert ändern
- 26. UIView Hintergrundfarbe programmgesteuert ändern
- 27. programmgesteuert ändern die Standardszene
- 28. Ändern Ring Dicke programmgesteuert
- 29. Navib-Titel programmgesteuert ändern
- 30. emacs programmgesteuert Fenstergröße ändern
danke für die schnelle antwort. Die Verwendung von Gruppen zur Handhabung dynamisch aktualisierter Benutzer ist sinnvoll. Aber wie würden dynamisch hinzugefügte Datensätze behandelt? Ein Benutzer kann beispielsweise ein Projekt unter/users/userid/projects/projectid erstellen und dann einer Gruppe von Mitarbeitern den Lesezugriff für dieses spezifische Projekt gewähren. Wie wäre das mit Firebase? – Jarnal
Die Gruppeneinstellung war nur ein Beispiel. Sie müssen keine Gruppen haben - Sie können davon abhängig sein, welche Daten Sie mögen. Zum Beispiel könnte das Dataset selbst ein "lesbares" Flag haben, das, wenn es auf "True" gesetzt ist, es jedem erlaubt, es zu lesen. Oder es könnte eine "lesbare" Liste von Benutzern haben, die es benutzen dürfen. Etc ... –
@AndrewLee, ich habe einen komplexeren Fall: Ich erstelle Räume (Zweige) dynamisch und ich möchte jeden Raum auf nur X spezifische Kollaborateure beschränken und jeden anderen davon abhalten, dort zu schreiben. Wie kann ich diese Zugriffsrechte bei der Zimmererstellung angeben? Beachten Sie, dass es Millionen verschiedener Räume geben kann. –