- C'è un modo per cancellare i dati memorizzati nella persistenza Firebase Database abilitata tramite
setPersistenceEnabled(true)
? - O eventualmente impedire l'accesso in lettura ai dati degli utenti precedentemente memorizzati sul dispositivo?
- E ulteriore domanda: esiste un modo per verificare se alcuni dati sono in attesa di sincronizzazione?
Nella mia app voglio cancellare db quando l'utente si disconnette e conferma che le modifiche non sincronizzate verranno rimosse. Questa applicazione sarà utilizzato su tablet da molte persone, e ci saranno molti dati memorizzati per utente, in modo da voglio cancellare i dati non necessari memorizzati sul dispositivo a:Cancella persistenza firebase dopo il logout
- utilizzo dello storage strizzacervelli
- prevenire persone non autorizzate di dati agli utenti di leggere
Si tratta di una falla di sicurezza in quanto qualsiasi utente, indipendentemente dal fatto che è firmato o no, ha accesso in lettura a tutti i dati precedentemente scaricati! Fortunatamente non abbiamo accesso in scrittura lì.
ho cercato di cancellare db da solo, sia in modalità offline e online, ma i dati ancora persistono sul dispositivo:
// first clear all data on my own
FirebaseDatabase db = FirebaseDatabase.getInstance();
db.goOffline(); // even when I clear db in online mode data persist on mobile device
db.getReference().setValue(null);
// and then logout
FirebaseAuth.getInstance().signOut();
db.goOnline();
esempio struttura dei dati:
{
"someList": {
"userId1": {
"itemId11": {
"name": "name 11"
},
"itemId12": {
"name": "name 12"
},
...
"itemId1N": {
"name": "name 1N"
}
}
"userId2": {
"itemId21": {
"name": "name 21"
},
"itemId22": {
"name": "name 22"
},
...
"itemId2N": {
"name": "name 2N"
}
}
}
}
mie regole:
{
"rules": {
".read": "false",
".write": "false",
"someList": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
hai provato 'mRef.keepSynced (false);' –
@SahajRana sfortunatamente aggiungendo 'keepSynced (false)' in qualsiasi luogo non cambia nulla. Solo quando cancello l'ultimo 'db.goOnline()' allora non posso davvero leggere i dati utente precedenti. Ma posso scrivere e leggere i nuovi dati come utente "disconnesso". E dopo aver effettuato il login quando chiamo 'db.goOnline()' (per avere db in sync) cancella tutti i miei vecchi dati sul backend e allo stesso addome aggiunge nuovi dati aggiunti come utente "disconnesso". – sosite
In realtà quando si imposta 'setPersistenceEnabled (true)' firebase memorizza i dati in forma cache sul dispositivo in modo che possa mostrare i dati quando si è offline –