【问题标题】:PERMISSION_DENIED (rules set for wrong database product)PERMISSION_DENIED(为错误的数据库产品设置的规则)
【发布时间】:2019-01-13 10:18:08
【问题描述】:

数据库规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

存储规则:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

上面写着Anyone with your database reference will be able to read or write to your database

我得到的错误:

Uncaught (in promise) Error: PERMISSION_DENIED: Permission denied
    at firebase.js:1
    at exceptionGuard (firebase.js:1)
    at e.callOnCompleteCallback (firebase.js:1)
    at firebase.js:1
    at firebase.js:1
    at t.onDataMessage_ (firebase.js:1)
    at e.onDataMessage_ (firebase.js:1)
    at e.onPrimaryMessageReceived_ (firebase.js:1)
    at e.onMessage (firebase.js:1)
    at e.appendFrame_ (firebase.js:1)
(anonymous) @ firebase.js:1
exceptionGuard @ firebase.js:1
e.callOnCompleteCallback @ firebase.js:1
(anonymous) @ firebase.js:1
(anonymous) @ firebase.js:1
t.onDataMessage_ @ firebase.js:1
e.onDataMessage_ @ firebase.js:1
e.onPrimaryMessageReceived_ @ firebase.js:1
(anonymous) @ firebase.js:1
e.appendFrame_ @ firebase.js:1
e.handleIncomingFrame @ firebase.js:1
mySock.onmessage @ firebase.js:1

我正在使用的代码示例:

let name = 'lorem'
let email = 'ipsum@test.com'
let imageUrl = 'secret_img_link'
let userId = 1231241241
firebase.database().ref('users/' + userId).set({
  username: name,
  email: email,
  profile_picture : imageUrl
})

如果还有其他需要,请询问。 我被困在那个错误上,对此无能为力。 重新创建应用程序,什么都不做。

【问题讨论】:

  • 您的代码看起来是用于实时数据库,而不是存储或 Firestore。
  • 这是我在文档中唯一能找到的。
  • 查看the docs。实时数据库的默认规则要求用户进行身份验证。
  • 但是我如何登录 JS 然后@AndréKool

标签: javascript firebase firebase-realtime-database firebase-security


【解决方案1】:

此问题已多次重复。让新手感到困惑的是导航到正确的地方。您的 Firebase 控制台中有云 Firestore 和实时数据库。在这种情况下,已经有几个人提供了解决方案。确保导航到 Firebase 控制台 --> 实时数据库 --> 权限并设置规则。但请记住,这仅在开发中允许。否则你不想让你的数据库向公众开放。

"rules": {
 ".read": true,
 ".write": true
}

希望现在对于面临此问题的任何人来说都是直截了当的。

【讨论】:

    【解决方案2】:

    好的,我自己找到了怎么做。

    进入数据库,标题旁边有2个选项:

    Cloud Firestore, Realtime database

    选择实时数据库并转到规则

    将规则更改为 true。

    这解决了我的问题。

    【讨论】:

    • 这对我来说是真正的解决方案。我花了大约 5 小时来更改库,因为我认为我的控制台上的一切都是正确的,而且我不知道我不应该在这个新的 Cloud Firestore 中,这要感谢 Firebase 出色的 UX 团队。
    • 我想知道为什么实时数据库规则是 JSON 而不是 OP 的格式。感谢这个答案,我想通了!
    猜你喜欢
    • 2018-02-07
    • 2020-12-29
    • 2011-11-27
    • 2012-11-20
    • 2020-04-29
    • 2017-05-20
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多