【问题标题】:FirebaseError: Missing or insufficient permissions. for update or createFirebaseError:权限缺失或不足。用于更新或创建
【发布时间】:2021-11-12 14:04:57
【问题描述】:

这是我的 Firebase 数据库中的安全规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /links/{linkId} {
      allow update, create: if request.auth.uid;
    }
  }
}

这是我使用 Firebase 版本 9 的 JS:

const db = getFirestore()
await addDoc(collection(db, "links"), {
    title: 'my link title'
})

我 100% 确定我当前已登录。就在我的 addDoc 代码之前,这是正确记录当前用户的 uid:

const { getAuth } = await import('firebase/auth');
console.log(getAuth().currentUser.uid)

【问题讨论】:

  • 你能编辑你的代码/repro 来证明用户确实登录了吗?例如。你能console.log(auth.currentUser.uid) 并在问题中显示更新的代码及其输出吗?
  • @FrankvanPuffelen 我刚刚更新了描述以包含授权证明。
  • 你能证明currentUser 值在addDoc 调用之前不为空吗?它应该是单个 sn-p 代码,因为它也在您的应用程序中运行。很抱歉对此坚持,但安全规则对此错误的情况并不常见。

标签: javascript google-cloud-firestore firebase-security


【解决方案1】:

将您的安全规则更改为:

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

【讨论】:

  • 自我注意:安全规则不是 100% JS。如,我不能使用“真实”的 JS 表达式。那好吧。这成功了。谢谢。
  • 不客气,值得一试。快乐的编码伙伴:)
  • 我也很惊讶@IanDavis,因为我一直在 RTDB 中进行request.auth 类型检查。
猜你喜欢
  • 2021-07-20
  • 2022-08-06
  • 2019-10-23
  • 2021-12-01
  • 2022-01-15
  • 2022-01-25
  • 2021-10-31
  • 1970-01-01
  • 2020-07-15
相关资源
最近更新 更多