为什么 firebase firestore 规则拒绝写入,指示 '...==...' 和 '&&' 为 false

why is firebase firestore rule denies write, indicating '...==...' and '&&' as false

Firestore 安全规则拒绝访问。

规则是:

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

游乐场规则指示 '...==...' 和“&&”为假。这有什么问题?非常感谢帮助!

完整规则和截图:

allow create, update, delete: if request.auth != null && request.auth.uid == id;

从你的截图来看,你是运行更新模拟。

  1. request.auth != null 如果用户未登录将失败。
  2. request.auth.uid == id 如果 uid != id;
  3. 将失败

从您的屏幕截图中,我们可以看到 authenticated 设置为 true。因此条件 1 将通过。 由于第二个条件,它目前正在失败。 request.auth.uid == id

目前,id == 'user',但是 request.auth.uid != 'user';

解决方案。将 request.auth.uid 设置为 'user'。为此,请进行身份验证,在 firebase UID 下,输入 'user'(作为您的 firebase uid)。它应该有效。

注意:您可能没有正确构建数据。您当前的数据结构类似于 'users/user',而应该是 'users/{userId}',其中 userId 是在用户创建帐户时由 firebase 生成的。