【问题标题】:Firebase Rules (Real-time Database). Check if post title contains user IDFirebase 规则(实时数据库)。检查帖子标题是否包含用户ID
【发布时间】:2021-05-08 21:35:54
【问题描述】:

我的帖子包含用户 ID,例如,用户 ID 为“abcd1234z”的用户的帖子名称为“abcd1234z-1”。如果帖子标题 ($child) 在名称中包含 userId,我无法获得写入规则检查。我尝试了 .contains 和 .matches 选项,但不能正确格式化正则表达式。

{
  "rules": {
    "cloud": {
      "news": {
        ".read": "auth.uid != null",
        ".write": "auth.uid != null",
      }
    },
    "forum": {
      "posts": {
        "$child": {
          ".read": "auth.uid != null",
          ".write": "auth.uid != null && $child.matches(/*+request.auth.uid/)"
          "$uid": {
            ".write": "auth.uid != null && $uid === auth.uid",
          }
        }
      }
    }
  }
}

【问题讨论】:

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


    【解决方案1】:

    我最近使用.contains 而非匹配项对此进行了测试,并且效果很好,因此请查看this question 和我评论中的屏幕截图。在您的情况下,它应该类似于:$child.contains(auth.uid)

    【讨论】:

    • 我最初尝试过但没有成功,由于某种原因我不得不删除请求,因为它不是一个可识别的变量?所以它现在可以使用:$child.contains(auth.uid)。谢谢!
    • 好收获。 request 仅存在于 Firestore。在实时数据库规则中,auth 是顶级变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2021-01-31
    相关资源
    最近更新 更多