Skip to main content
Stai visualizzando la documentazione per sviluppatori
Questa documentazione è per sviluppatori che lavorano con la piattaforma per sviluppatori di Base44. Per informazioni sulla gestione dei dati della tua app usando l’editor, consulta Gestire i dati dell’app.
Le entità supportano due livelli di sicurezza:
  • Sicurezza a livello di riga (RLS): controlla a quali record gli utenti possono accedere.
  • Sicurezza a livello di campo (FLS): controlla a quali campi all’interno dei record gli utenti possono accedere.
L’accesso con service role ignora queste regole: base44.asServiceRole aggira completamente sia RLS sia FLS, a prescindere da come è configurata l’entità. Non ti serve quindi una regola admin corrispondente per leggere o scrivere un record. È disponibile solo nelle funzioni backend ospitate da Base44 e la tua funzione è responsabile degli eventuali controlli di accesso necessari.

Tipi di permesso

Ogni livello di sicurezza ha permessi diversi che puoi impostare. Per ogni permesso, definisci chi è autorizzato a eseguire l’azione.

Sicurezza a livello di riga (RLS)

  • create - aggiungere nuovi record
  • read - visualizzare i record
  • update - modificare i record
  • delete - rimuovere i record

Sicurezza a livello di campo (FLS)

  • read - visualizzare il campo
  • write - creare o modificare il campo

Valori dei permessi

Ogni permesso accetta uno dei seguenti valori:
  • true - consente a tutti gli utenti
  • false - blocca tutti gli utenti
  • {<condition>} - consente agli utenti che corrispondono alla condizione

Differenze tra letture e scritture negate

Le letture negate si comportano come se i dati non esistessero, quindi non rivelano cosa c’è. Le scritture negate generano un errore, quindi una modifica bloccata non fallisce mai in silenzio.

Sintassi delle condizioni

Quando usi {<condition>} come valore di permesso, puoi definire regole che verificano attributi o ruoli dell’utente.
Una condizione che fa riferimento a {{user.*}} o usa user_condition richiede un chiamante autenticato. Un chiamante anonimo non ha un utente con cui fare il confronto, quindi la regola lo blocca direttamente invece di valutarsi come falsa.
1. Confronto entità-utente Confronta i campi del record con i valori dell’utente corrente. Campi dell’entità che puoi referenziare:
  • created_by - email dell’utente che ha creato il record
  • created_by_id - ID dell’utente che ha creato il record
  • entity_name - nome del tipo di entità
  • app_id - ID dell’app
  • environment - prod oppure dev
  • is_sample - se si tratta di dati di esempio
  • is_deleted - flag di eliminazione soft
  • deleted_date - quando è stato eliminato
  • data.* - qualsiasi campo dalle proprietà del tuo schema entità
Variabili template per i valori utente:
  • {{user.email}} - email dell’utente
  • {{user.id}} - ID dell’utente
  • {{user.role}} - ruolo dell’utente
  • {{user.data.*}} - campi utente aggiuntivi che definisci
Esempio:
2. Verifica delle condizioni utente Verifica direttamente le proprietà dell’utente usando user_condition. Campi utente che puoi verificare:
  • email - email dell’utente
  • id - ID dell’utente
  • role - ruolo dell’utente
  • data.* - campi utente personalizzati
Esempio:
3. Condizioni complesse Combina più condizioni usando gli operatori. Operatori supportati: $or, $and, $nor, $in, $nin, $all Esempio:

Esempio di sicurezza a livello di riga (RLS)

Aggiungi rls a livello di entità:

Esempio di sicurezza a livello di campo (FLS)

Aggiungi rls alle singole proprietà dei campi:

Esempio completo con sicurezza

Ecco uno schema di entità con sia RLS che FLS:

Distribuire le regole di sicurezza

Le regole di sicurezza fanno parte del tuo schema di entità. Dopo aver aggiunto o aggiornato le regole di sicurezza, distribuisci usando entities push. Le regole di sicurezza vengono anche distribuite automaticamente quando esegui il comando deploy per distribuire l’intero progetto.

Vedi anche

Questa pagina è stata tradotta utilizzando l’IA. Per informazioni più accurate e aggiornate, consulta la versione inglese.