gpt4 book ai didi

android - 注销后清除 Firebase 持久性

转载 作者:IT老高 更新时间:2023-10-28 22:03:30 26 4
gpt4 key购买 nike

  1. 有什么办法可以清除Firebase Database中的数据吗?通过 setPersistenceEnabled(true) 启用持久性?
  2. 或者最终阻止对设备上先前存储的用户数据的读取访问?
  3. 还有一个问题 - 有没有办法检查是否有任何数据正在等待同步?

在我的应用程序中,我想在用户注销时清除数据库,并且他确认将删除未同步的更改。这个应用程序会被很多人在平板电脑上使用,每个用户都会存储很多数据,所以我想清除设备上存储的不必要的数据:

  • 减少存储空间使用量
  • 防止未经授权的人读取用户数据

这是一个安全漏洞,因为任何用户,无论是否登录,都可以读取之前下载的所有数据!幸运的是,我们没有写入权限。

我尝试在离线和在线模式下自行清除数据库,但数据仍保留在设备上:

// 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"
}
}
}
}

最佳答案

很遗憾,没有支持清除持久性缓存的方法。您可以尝试手动删除 Firebase 数据库使用的 SQLite 数据库(应该在您应用的数据文件夹中的 /databases/ 下),但您需要在初始化 Firebase 数据库之前执行此操作,所以您d 必须在某人退出或类似情况后强制应用重新启动。

关于知道是否有“等待同步的数据”,假设您正在谈论写入,唯一的方法是将 CompletionListener 附加到您执行的每个写入操作,然后等待它们完成。

我们希望在 Firebase 数据库 SDK 的 future 版本中改进这两点。

关于android - 注销后清除 Firebase 持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38281761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com