【问题标题】:Firebase rules with custom IDs on nodes节点上具有自定义 ID 的 Firebase 规则
【发布时间】:2019-04-30 09:59:36
【问题描述】:

我一直在尝试为我的 firebase 数据库创建一些规则,但似乎我遇到了障碍,或者(希望)我没有得到某些点。

我的数据结构如下所示:

units
    <custom user id eg. 1234>
        unit1
        unit2
        ...
users
    <custom user id eg. 1234>
        name
        email
        phone
        ...
node3
    <custom user id eg. 1234>
        object1
        object2
        ...

我想做的是创建规则,只允许 ID 为 1234 的用户(这显然不同于 Firebase 身份验证中用户的 uid)访问他的节点。

有什么方法可以实现吗?

【问题讨论】:

  • 您阅读过文档吗?有一个关于每用户安全规则的页面。它描述了你需要知道的一切。 firebase.google.com/docs/database/security/user-security
  • 问题是,当我使用“自定义”ID 创建节点而不是让 Firebase 动态创建它们时,它似乎不起作用?
  • 编辑问题以显示无法按预期方式工作的规则,以及访问数据库的代码。您需要向我们说明究竟什么是行不通的。

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


【解决方案1】:

我不知道您为什么不使用 Firebase 身份验证用户 UID 而不是自定义 UID,但可以 :)

如果您在数据库中的某个位置在 Firebase 身份验证 UID 和您的自定义 UID 之间进行了映射(例如,您在 mapping/1234/authUID 中保存了用户 1234 的 Firebase 身份验证 UID),那么您可以像这样编写数据库规则:

"users": {
    "$customUserUid": {
        ".write": "root.child('mapping').child($customUserUid).child('authUID').val() === auth.uid"
    }
}

【讨论】:

  • 这似乎正是我需要的提示,非常感谢! :) 编辑:不幸的是,自定义 UID 背后的原因是我无法控制的
  • 但是第一次使用此规则技巧创建新用户时,它会抛出错误 Unhandled Exception: PlatformException(-3, Permission denied, ) Please help
猜你喜欢
  • 2019-07-20
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
相关资源
最近更新 更多