Firebase安全规则澄清

时间:2017-12-05 01:37:08

标签: javascript firebase react-native firebase-realtime-database firebase-security

我正在尝试设置安全规则,以便从反应原生项目访问我的Firebase数据库。我目前有一个根路径one,其中包含推送的任务项。每个任务都有3个子节点,重要的一个是用户创建任务时用用户ID填充的uid字段。以下是位于ModuleFinder finder = ModuleFinder.of(Paths.get("/path/to/module/in/out/production/")); // this is generally a path where I build my modules to ModuleLayer parent = ModuleLayer.boot(); Configuration cf = parent.configuration() .resolve(finder, ModuleFinder.of(), Set.of("one")); // name of module in module-info ClassLoader scl = ClassLoader.getSystemClassLoader(); ModuleLayer layer = parent.defineModulesWithManyLoaders(cf, scl); layer.modules() .stream() .map(Module::getDescriptor) // get the descriptor of module .map(ModuleDescriptor::requires) // set of requires in the module dependencies .forEach(System.out::println); 的示例任务:

tasks/

我正在尝试使用安全规则来限制对任何任务的读/写访问,只允许用户使用自己的UID创建任务,并读取/查询与他们匹配的任务。

以下是关于数据库任务部分的安全规则:

tasks/randomtaskid

安全规则模拟器说这确实成功地限制了访问 - 当我尝试读取/写入与它阻止访问的uid不匹配的任务时它会在匹配时允许它,但是当我尝试时为了从我的应用程序中访问任务,我得到一个权限被拒绝的错误(一旦我回到允许所有经过身份验证的用户对{ "date" : "2017-12-11", "ttRef" : "irrelevant", "uid" : "DrL3j1cWVehas45ghmeQ" } 的读/写访问权限就会消失)。为什么他们会有所不同,我该怎么做才能修复我的规则?谢谢!

编辑:导致错误的代码示例:

"tasks": {
    ".indexOn": ["uid", "date"],
    "$task": {
        ".validate": "newData.hasChildren(['date', 'ttRef', 'uid'])",
        ".write": "auth != null && newData.child('uid').val() == auth.uid",
        ".read": "auth != null && data.child('uid').val() == auth.uid",
  },
},

0 个答案:

没有答案