我遇到firebase用户的删除逻辑问题。 问题是:当安全设置只允许经过身份验证的用户操作数据库时,如何删除用户然后删除所有数据?
NSString *userUID = user.uid;
[user deleteWithCompletion:^(NSError *_Nullable error) {
if (error) {
}
else {
// Account deleted.
[[[_ref child:@"user_info"] child:userUID] removeValue];
}
}];
在日志中: setValue:或removeValue:at / user_info / jKXh5g1t2kbaHIqKTiz75PTGhc33 failed:permission_denied
这里的最佳做法是什么?我是否需要更改安全规则,或者是否存在适用于此情况的代码逻辑?
我感谢你的帮助!
答案 0 :(得分:1)
你有几个选择。
第一个选项是在删除帐户之前从数据库中删除用户数据。这意味着您可以从应用程序本身触发删除,因此不会出现安全问题。
第二个选项是从云功能中删除用户帐户后立即删除用户数据。这些函数在受信任的环境中运行,因此(使用Admin SDK)具有对数据库的完全管理访问权限。您将trigger your function when the user account is deleted并清理数据库。
有一个完整的github仓库有助于这种数据清理:user-data-protection。它基于与前一个示例相同的Cloud Functions trigger,但以声明方式涵盖了更广泛的数据清理。