【问题标题】:Firebase security rules acting differently in v3Firebase 安全规则在 v3 中的作用不同
【发布时间】:2019-05-15 04:20:24
【问题描述】:

我正在尝试为 12 月不推荐使用 v2 firebase 时准备一些旧应用程序。 18. Firebase 电子邮件说只有身份验证将被弃用,但由于安全规则,我的 AngularFire 功能似乎也无法正常工作。例如 -

$firebaseArray(ref.child('data').child('stuff')); <- used to work no problem

但是现在 (v3) 它说它无权访问该数据。

这些是 Firebase 规则 -

$company:{
".read": "root.child('users').child(auth.uid).child('company').val() == $company || root.child('users').child(auth.uid).child('company').val() == 'COMPANY'",

但是,如果我只是将读取和写入都设置为 TRUE,它会再次起作用。

$company: {
".read": "true",
".write": "true"
}

$firebaseArray 可以工作,但它以以前没有的方式被安全规则绊倒了。关于如何调整规则以使其按应有的方式运行的任何想法?

现在,如果我使用 v3 快照方法访问数据,它就可以工作了!但现在它没有与数据同步,它只是那个特定时刻的快照。我使用 $firebaseArray 和 $firebaseObject 的原因是它会与数据库上的任何更改同步。

firebase.database().ref('/stuff').once('value').then(function(snapshot) {
  console.log('it worked!');
});

谢谢!

******************新编辑********************* 18 年 12 月 14 日

firebase.initializeApp({
  apiKey: APIKEY,
  databaseURL: FIREBASE_URL, // Realtime Database
});

var stuffRef = firebase.database().ref().child('stuff');
var dataMaster = $firebaseObject(stuffRef);

我收到此错误 - ref.ref 不是函数

我做错了什么??谢谢!

【问题讨论】:

  • 12月18日唯一改变的是旧的身份验证端点停止工作,安全规则的解释没有改变,12月18日也不会改变。---我写了为什么最后一个 sn-p 只触发一次,但不知道为什么您会看到您描述的其他更改。也很难将代码(访问/stuff)映射到您共享的规则(控制对JSON 中某处$company 的访问)。请确保您的问题包含您正在寻求帮助的minimal, standalone, reproduction of the problem。
  • 嘿@FrankvanPuffelen - 感谢您的回复。请检查我在问题中的编辑,以了解我解决的具体问题。谢谢!
  • 您使用的 AngularFire 版本似乎与您使用的 Firebase SDK 不兼容。
  • @FrankvanPuffelen 您说得对,先生。该应用程序从 2015 年开始在 Angular Fire 1.1.2 上运行。我将它升级到 2.3,它现在看起来可以工作了。
  • 很高兴听到。我也用这些信息更新了我的答案。

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


【解决方案1】:

当您使用firebase.database().ref('/stuff').once('value') 时,回调只会被调用一次(因此得名)。如果您想使用当前值和调用该值的任何更新,请使用on():

firebase.database().ref('/stuff').on('value', function(snapshot) {
  console.log('it worked!');
});

请注意,您使用的 AngularFire 版本非常旧,因此它可能无法与从未使用过的 Firebase SDK 一起使用。在这种情况下,请考虑更新您的 AngularFirebase 版本。

【讨论】:

    猜你喜欢
    • 2018-01-30
    • 1970-01-01
    • 2018-11-05
    • 2020-08-24
    • 2020-01-30
    • 1970-01-01
    • 2021-12-24
    • 2016-06-03
    相关资源
    最近更新 更多