Esempi RLS
Pattern pratici di Row-Level Security per tipi comuni di applicazioni. Importante: Base44 RLS supporta:- Operatori logici:
$or,$and,$norper combinare condizioni - Operatori sui campi (per i campi
data.*):$in,$nin,$ne,$all - user_condition: solo uguaglianza (nessun operatore)
Contenuti
- Pattern semplici (JSON Schema)
- Uso degli operatori
- Esempi di sicurezza a livello di campo
- Pattern complessi (interfaccia Dashboard o backend)
- Migliori pratiche
Pattern semplici (JSON Schema)
Questi pattern funzionano con il formato RLS JSON schema.App Todo - accesso solo al proprietario
Gli utenti vedono e gestiscono solo le proprie attività.Modulo di contatto - creazione pubblica, lettura solo admin
Chiunque può inviare, solo gli admin possono visualizzare le sottomissioni.Profilo utente - auto-gestione
Gli utenti possono accedere solo al proprio profilo.Dati di dipartimento - accesso allo stesso dipartimento
Gli utenti possono vedere solo i record del proprio dipartimento.Abbonamento - gestito dall’admin, leggibile dall’utente tramite campo email
Dati privati - solo proprietario
Lettura pubblica, scrittura autenticata
Chiunque può leggere, solo gli utenti loggati possono creare/modificare i propri record.Uso degli operatori
Operatori logici
Combina più condizioni usando$or, $and o $nor:
Accesso proprietario O admin:
Operatori sui campi per campi data.*
Usa$in, $nin, $ne, $all per confrontare i campi data delle entità:
Accesso in base ai tag ($in):
Combinare operatori logici e sui campi
Esempi di sicurezza a livello di campo
Controlla l’accesso a campi specifici all’interno di un’entità.Campo sensibile stipendio
Campi interni solo admin
Pattern complessi (interfaccia Dashboard o backend)
Alcuni pattern potrebbero comunque richiedere l’interfaccia Dashboard o le funzioni backend.Relazioni bidirezionali (ad es. amicizie, match)
Requisito: entrambe le parti in una relazione dovrebbero avere accesso. Ora possibile con $or:- Ridisegno dell’entità: memorizza due record per relazione (uno per ogni parte)
- Funzione backend: interroga con logica personalizzata
Logica di business complessa
Requisito: l’accesso dipende da più campi entità con condizioni complesse. Limitazione JSON Schema: anche se gli operatori aiutano, la logica di business molto complessa potrebbe comunque essere difficile da esprimere. Opzioni di soluzione:- Funzione backend: implementa la logica di accesso personalizzata
- Combina regole più semplici: dividi le regole complesse in regole più semplici a livello di entità e di campo
Migliori pratiche
Strategia di sicurezza
Usa una combinazione di RLS a livello di entità e sicurezza a livello di campo:| Tipo di dato | Approccio | Esempio |
|---|---|---|
| Modificabile dall’utente | RLS entità: solo proprietario | UserProfile con controllo created_by |
| Campi sensibili | RLS a livello di campo | Campo stipendio con controllo ruolo HR |
| Accesso multi-ruolo | $or con user_condition | Accesso admin O manager |
| Accesso condizionale | Operatori sui campi | $in, $ne su campi data |
| Contenuto pubblico | RLS entità: read: true | PublicPost |
| Contenuto privato | RLS entità: solo proprietario | PrivateNote |
Quando usare ogni approccio
| Requisito | Approccio |
|---|---|
| Condizione singola (proprietario, admin, dipartimento) | RLS JSON Schema |
| Più condizioni OR/AND | RLS JSON Schema con $or/$and |
Controlli sui valori dei campi con $in/$ne/ecc. | RLS JSON Schema per campi data.* |
| Controllo di accesso a livello di campo | FLS JSON Schema (rls a livello di campo) |
Operatori di confronto complessi ($gt, $lt) | Funzioni backend |
| Logica di business molto complessa | Funzioni backend |
Pattern comuni di ruoli
| Ruolo | Accesso tipico |
|---|---|
admin | Accesso completo a tutti i record |
moderator | Accesso in lettura/aggiornamento, eliminazione limitata |
manager | Accesso a livello di dipartimento |
user | Solo record propri |
Riepilogo degli operatori supportati
| Operatore | Supportato | Note |
|---|---|---|
$or | Sì | Combina più condizioni |
$and | Sì | Tutte le condizioni devono corrispondere |
$nor | Sì | Nessuna delle condizioni corrisponde |
$in | Sì | Solo per campi data.* |
$nin | Sì | Solo per campi data.* |
$ne | Sì | Solo per campi data.* |
$all | Sì | Solo per campi data.* |
$gt, $lt, $gte, $lte | No | Usa funzioni backend |
$regex | No | Usa funzioni backend |
Riepilogo delle limitazioni
| Non supportato | Alternativa |
|---|---|
Operatori su user_condition | Usa solo uguaglianza per i controlli utente |
Operatori di confronto ($gt, $lt) | Funzioni backend |
Corrispondenza regex ($regex) | Funzioni backend |
| Relazioni tra entità | Funzioni backend |
Questa pagina è stata tradotta utilizzando l’IA. Per informazioni più accurate e aggiornate, consulta la versione inglese.

