PERMISSION_DENIED(为错误的数据库产品设置的规则)

Posted

技术标签:

【中文标题】PERMISSION_DENIED(为错误的数据库产品设置的规则)【英文标题】:PERMISSION_DENIED (rules set for wrong database product) 【发布时间】: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 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

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

Cloud Firestore, Realtime database

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

将规则更改为 true。

这解决了我的问题。

【讨论】:

这对我来说是真正的解决方案。我花了大约 5 小时来更改库,因为我认为我的控制台上的一切都是正确的,而且我不知道我不应该在这个新的 Cloud Firestore 中,这要感谢 Firebase 出色的 UX 团队。 我想知道为什么实时数据库规则是 JSON 而不是 OP 的格式。感谢这个答案,我想通了!

以上是关于PERMISSION_DENIED(为错误的数据库产品设置的规则)的主要内容,如果未能解决你的问题,请参考以下文章

FIREBASE WARNING:设置为/ notifications / failed:permission_denied

从 Cloud Tasks 触发 HTTP Cloud Function 时出现 PERMISSION_DENIED 403 错误

为啥@google-cloud/profiler 在 GKE 实例中运行时会抛出“permission_denied”错误?

尝试运行 Google Cloud Scheduler 任务时出现 PERMISSION_DENIED 错误

Firebase Cloud Functions Firestore 触发器产生:错误:7 PERMISSION_DENIED:缺少权限或权限不足

Phonegap 地理位置 PERMISSION_DENIED