Firebase用户删除自身账户时遇权限不足问题求助
解决Firebase删除用户账户权限不足问题
问题原因
你当前的Firestore规则中,.write权限已经覆盖了创建、更新、删除所有写操作,额外添加的.delete规则条件(auth.uid == resource.data.uid)要么属于多余限制,要么因文档中uid字段缺失/值不匹配导致权限验证失败。
解决方案
方案1:简化规则(推荐)
直接保留.write规则即可,它已经允许用户对自己的文档执行删除操作:
{ "rules": { "users": { "$userId": { ".read": "auth != null && auth.uid == $userId", ".write": "auth != null && auth.uid == $userId" } } } }
方案2:保留单独删除权限控制(需确保文档数据正确)
如果需要单独限制删除权限,必须保证users集合下的目标文档中存在uid字段,且字段值与当前登录用户的uid完全一致。规则可保留但需验证文档数据:
{ "rules": { "users": { "$userId": { ".read": "auth != null && auth.uid == $userId", ".write": "auth != null && auth.uid == $userId", ".delete": "auth != null && auth.uid == resource.data.uid" } } } }
额外检查点
- 确认
users集合下的文档ID与Auth.auth().currentUser?.uid完全一致 - 若使用方案2,检查目标文档的
uid字段是否存在、值是否正确,避免字段名拼写错误 - 你的Swift代码已校验用户登录状态,这部分无需修改
内容的提问来源于stack exchange,提问作者Anna B.
相关产品推荐
相关产品推荐

