RLS-Beispiele
Praktische Row-Level-Security-Muster für gängige Anwendungstypen. Wichtig: Base44 RLS unterstützt:- Logische Operatoren:
$or,$and,$norzum Kombinieren von Bedingungen - Feldoperatoren (für
data.*-Felder):$in,$nin,$ne,$all - user_condition: Nur Gleichheit (keine Operatoren)
Inhalt
- Einfache Muster (JSON-Schema)
- Operatoren verwenden
- Field-Level-Security-Beispiele
- Komplexe Muster (Dashboard-UI oder Backend)
- Best Practices
Einfache Muster (JSON-Schema)
Diese Muster funktionieren mit dem JSON-Schema-RLS-Format.Todo-App — Nur-Besitzer-Zugriff
Nutzer sehen und verwalten nur ihre eigenen Aufgaben.Kontaktformular — Öffentliches Erstellen, nur-Admin-Lesen
Jeder kann einreichen, nur Admins können Einträge ansehen.Nutzerprofil — Selbstverwaltung
Nutzer können nur auf ihr eigenes Profil zugreifen.Abteilungsdaten — Zugriff für gleiche Abteilung
Nutzer sehen nur Datensätze aus ihrer Abteilung.Abo — Admin-verwaltet, für Nutzer über E-Mail-Feld lesbar
Private Daten — Nur Besitzer
Öffentlich lesen, authentifiziert schreiben
Jeder kann lesen, nur eingeloggte Nutzer können ihre eigenen Datensätze erstellen/bearbeiten.Operatoren verwenden
Logische Operatoren
Kombiniere mehrere Bedingungen mit$or, $and oder $nor:
Besitzer- ODER Admin-Zugriff:
Feldoperatoren für data.*-Felder
Verwende$in, $nin, $ne, $all zum Vergleichen von Entitäts-Datenfeldern:
Zugriff basierend auf Tags ($in):
Logische und Feldoperatoren kombinieren
Field-Level-Security-Beispiele
Steuere den Zugriff auf bestimmte Felder innerhalb einer Entität.Sensibles Gehaltsfeld
Nur-Admin-interne Felder
Komplexe Muster (Dashboard-UI oder Backend)
Manche Muster erfordern immer noch die Dashboard-UI oder Backend-Funktionen.Bidirektionale Beziehungen (z. B. Freundschaften, Matches)
Anforderung: Beide Parteien einer Beziehung sollen Zugriff haben. Jetzt mit $or möglich:- Entitäts-Umbau: Speichere zwei Datensätze pro Beziehung (einen pro Partei)
- Backend-Funktion: Abfrage mit benutzerdefinierter Logik
Komplexe Geschäftslogik
Anforderung: Zugriff hängt von mehreren Entitätsfeldern mit komplexen Bedingungen ab. JSON-Schema-Einschränkung: Auch mit Operatoren kann sehr komplexe Geschäftslogik schwer auszudrücken sein. Lösungsoptionen:- Backend-Funktion: Benutzerdefinierte Zugriffslogik implementieren
- Einfachere Regeln kombinieren: Komplexe Regeln in einfachere Regeln auf Entitäts- und Feldebene aufteilen
Best Practices
Sicherheitsstrategie
Nutze eine Kombination aus Entitäts-RLS und Field-Level-Security:| Datentyp | Ansatz | Beispiel |
|---|---|---|
| Vom Nutzer editierbar | Entitäts-RLS: Nur-Besitzer | UserProfile mit created_by-Prüfung |
| Sensible Felder | Field-Level-RLS | Gehaltsfeld mit HR-Rollenprüfung |
| Zugriff für mehrere Rollen | $or mit user_condition | Admin- ODER Manager-Zugriff |
| Bedingter Zugriff | Feldoperatoren | $in, $ne auf Datenfeldern |
| Öffentlicher Inhalt | Entitäts-RLS: read: true | PublicPost |
| Privater Inhalt | Entitäts-RLS: Nur-Besitzer | PrivateNote |
Wann welchen Ansatz verwenden
| Anforderung | Ansatz |
|---|---|
| Einzelne Bedingung (Besitzer, Admin, Abteilung) | JSON-Schema-RLS |
| Mehrere ODER/UND-Bedingungen | JSON-Schema-RLS mit $or/$and |
Feldwertprüfungen mit $in/$ne/usw. | JSON-Schema-RLS für data.*-Felder |
| Feldebenen-Zugriffssteuerung | JSON-Schema-FLS (feldbezogenes rls) |
Komplexe Vergleichsoperatoren ($gt, $lt) | Backend-Funktionen |
| Sehr komplexe Geschäftslogik | Backend-Funktionen |
Häufige Rollenmuster
| Rolle | Typischer Zugriff |
|---|---|
admin | Vollzugriff auf alle Datensätze |
moderator | Lese-/Änderungszugriff, eingeschränktes Löschen |
manager | Auf Abteilung beschränkter Zugriff |
user | Nur eigene Datensätze |
Zusammenfassung unterstützter Operatoren
| Operator | Unterstützt | Hinweise |
|---|---|---|
$or | Ja | Mehrere Bedingungen kombinieren |
$and | Ja | Alle Bedingungen müssen zutreffen |
$nor | Ja | Keine der Bedingungen trifft zu |
$in | Ja | Nur für data.*-Felder |
$nin | Ja | Nur für data.*-Felder |
$ne | Ja | Nur für data.*-Felder |
$all | Ja | Nur für data.*-Felder |
$gt, $lt, $gte, $lte | Nein | Backend-Funktionen verwenden |
$regex | Nein | Backend-Funktionen verwenden |
Zusammenfassung der Einschränkungen
| Nicht unterstützt | Alternative |
|---|---|
Operatoren bei user_condition | Nur Gleichheit bei Nutzerprüfungen verwenden |
Vergleichsoperatoren ($gt, $lt) | Backend-Funktionen |
Regex-Matching ($regex) | Backend-Funktionen |
| Entitätsübergreifende Beziehungen | Backend-Funktionen |
Diese Seite wurde mit KI übersetzt. Für die genauesten und aktuellsten Informationen siehe die englische Version.

