首页 > 解决方案 > Firebase 删除的用户能够创建文档,为什么?

问题描述

我有一个 iOS 应用程序,它通过检查来检查用户是否已经登录Auth.auth().currentUser。如果这返回非空值,则应用程序“自动”将用户登录到应用程序。

如果我使用 Firebase 管理工具删除用户,iOS 应用程序将不知道删除。它只会检查是否Auth.auth().currentUser存在,如果存在,它会“自动”登录。然而,发生的情况是,尽管删除了用户(匿名用户),但用户仍能够在数据库中创建文档。

我有安全规则来防止这种情况:

match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;

      match /{document=**} {
        allow read, write: if request.auth != null && request.auth.uid == userId;
      }
    }
  }
}

一个不存在的用户怎么可能拥有request.auth != null该用户不存在于“身份验证”选项卡中。


果然,如果我重新加载用户它会给出一个错误:

Auth.auth().currentUser.reload { error in }

没有与此标识符对应的用户记录。该用户可能已被删除。

标签: iosfirebasegoogle-cloud-firestorefirebase-authentication

解决方案


推荐阅读