【问题标题】:Unable to structure a Firebase Database security rule properly无法正确构建 Firebase 数据库安全规则
【发布时间】:2016-12-02 14:06:54
【问题描述】:

在我的 iOS 应用程序中,用户创建了一个与 Twitter 用户名具有相似特征的用户名。一旦被识别为唯一的,它就会通过带有以下签名的 updateChildValues 持久化到数据库中:(在示例中,用户名为 JogBloggs)。

     ["usernames/": ["joebloggs: \(user.uid)"]]

在我的 fb 数据库的安全规则中,我想创建一个规则来确保上传的 uid 与当前用户的 uid 相同。我如何键入安全规则来确保这一点?我在下面的尝试不起作用。

     "root.child('usernames').child(newData.val()).val() == auth.uid"

我的数据库中有以下结构

与这些规则相关联:

干杯

【问题讨论】:

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


    【解决方案1】:

    好的,如果可以的话,我会删除这个问题! 答案非常复杂且具有挑战性.....

        newData.val() == auth.uid
    

    结构完整,正确答案如下

        "usernames": {  
        ".read": "auth != null",
        ".write": "auth != null && auth.token.name == null", 
                "$username": {
                    ".validate": "$username.length >= 1 && $username.length <= 15 &&
                              !root.child('usernames').child(newData.val().toLowerCase()).exists() &&
                                        newData.val() == auth.uid" 
            }
        }
    

    【讨论】:

    • 很高兴听到您找到了答案。在以后的帖子中,请不要发布文本截图,而是发布文本本身。这使其可搜索,并允许我们轻松获取您的代码/JSON 以尝试重现问题或在我们的答案中使用它。
    • 是的,肯定不会再发生,并且会改变它。顺便说一句,关于 Udacity 的精彩视频系列! :)
    猜你喜欢
    • 2016-09-16
    • 2016-10-31
    • 2016-03-12
    • 2020-08-08
    • 2018-12-15
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    相关资源
    最近更新 更多