- Есть ли способ очистить данные, хранящиеся в базе данных Firebase, через
setPersistenceEnabled(true)
? - Или в конечном итоге предотвратить доступ к чтению ранее сохраненных данных пользователей на устройстве?
- И дополнительный вопрос - есть ли способ проверить, ждут ли какие-либо данные для синхронизации?
В моем приложении я хочу очистить db, когда пользователь выходит из системы, и он подтверждает, что несинхронизированные изменения будут удалены. Это приложение будет использоваться на планшете многими людьми, и на каждого пользователя будет храниться много данных, поэтому я хочу удалить ненужные данные, хранящиеся на устройстве, чтобы:
- сокращение использования хранилища
- Предотвращение несанкционированного чтения пользователями данных.
Это ошибка безопасности, потому что любой пользователь, независимо от того, подписан ли он или нет, имеет доступ для чтения ко всем ранее загруженным данным! К счастью, у нас нет доступа для записи.
Я попытался очистить db самостоятельно, как в автономном режиме, так и в режиме онлайн, но данные все еще сохраняются на устройстве:
// 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();
например, структура данных:
{
"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"
}
}
}
}
мои правила:
{
"rules": {
".read": "false",
".write": "false",
"someList": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}