【问题标题】:How to make cloud Firestore auth Uid match userid?如何使云 Firestore auth Uid 匹配用户 ID?
【发布时间】:2019-08-15 07:01:27
【问题描述】:

Firestore docs 中,一种推荐的编写安全规则的方法是

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
  }
}

但是,当我创建用户时,用户 ID 与 auth.uid 不同(两者都是随机字符串,但完全随机)。

创建新用户时如何使它们自动匹配?

【问题讨论】:

    标签: ios swift firebase google-cloud-firestore firebase-security


    【解决方案1】:

    您显示的规则表明文档的 ID 应与通过 Firebase 身份验证获得的用户 UID 匹配。这是标准做法。如果您的代码也没有为此编写文档,那么该规则将无法按您预期的那样工作。所以,你 get the UID of the user 并将其用作文档的 ID。

    【讨论】:

    • 但是我从来没有指定我想要的文档 ID 是什么(它是自动生成的)Firebase 上是否有办法始终使其与身份验证 ID 相同?
    • 是的,从 Firebase Auth 获取用户的 UID 并将其用作文档的 ID。
    • 如何在代码中做到这一点?是在Auth.auth().createUser() 还是firestoreUsersCollection.addDocument()
    • 在我的回答中,我链接到了一个获取从搜索中找到的 UI 的示例。
    • 这解释了如何获取 UID,而不是如何在创建用户时设置它(用户必须使用您提供的链接登录,但我想在用户时自动分配该 UID在注册时创建,在登录之前)
    猜你喜欢
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2018-04-18
    • 2021-02-28
    • 2018-04-08
    • 1970-01-01
    相关资源
    最近更新 更多