Firebase 安全规则完全打开,但仍然授予权限被拒绝错误

Posted

技术标签:

【中文标题】Firebase 安全规则完全打开,但仍然授予权限被拒绝错误【英文标题】:Firebase Security Rules completely open but still giving permission denied error 【发布时间】:2018-06-05 23:52:01 【问题描述】:

我已经为我的 Firebase 权限编写了这些安全规则,据我所知,这些安全规则应该授予所有经过身份验证的用户读写权限...


 "rules": 
  ".read": "auth != null",
  ".write": "auth != null"


但我的 RTDB 节点上仍然出现这些错误..

[Firebase/Database][I-RDB03812] Listener at /UserVideo/null failed: permission_denied
[Firebase/Database][I-RDB03812] Listener at /users/4eb8920a-e407-4488-bce4-c6f64f7b0891 failed: permission_denied

我已经验证 4eb8920a-e407-4488-bce4-c6f64f7b0891 实际上是用户 uid。我的安全模拟器告诉我,我的 ref/users 和 ref/UserVideo 都允许读取和写入。我错过了什么?

【问题讨论】:

也许您没有通过身份验证?尝试true 而不是"auth != null" 来检查。 我建议您检查甚至发布您的代码 - 特别是您在哪里进行身份验证,并查看在您进行身份验证时它是否返回错误。 请注意,您正尝试将侦听器附加到 /UserVideo/null,这可能是问题的线索。 【参考方案1】:

改用 auth.uid:


    "rules": 
        ".read": "auth.uid != null",
        ".write": "auth.uid != null"
    

【讨论】:

".read": "auth != null", 是 Firebase 提供的默认设置,因此 auth.uid 不会产生任何影响。

以上是关于Firebase 安全规则完全打开,但仍然授予权限被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

如何调试 Firebase 安全规则/权限

如何从 swift 代码中应用 firebase 数据库安全规则

在 Firebase 中添加对另一个项目的访问权限

Firebase 数据库规则权限被拒绝但模拟工作

Firebase Cloud Storage 规则能否针对 Firestore 数据进行验证?

在不使用 Firebase 身份验证的情况下设置 Firestore 安全规则