【问题标题】:How to catch read permission denial in Firebase using the js web API如何使用 js Web API 在 Firebase 中捕获读取权限被拒绝
【发布时间】:2016-12-25 15:14:48
【问题描述】:
我已经设置了规则,以便只有白名单中的用户可以读取数据库。白名单用户一切正常。但是,我不知道如何处理其他情况,尤其是不在白名单上的经过身份验证的用户。由于它们不符合安全规则,因此 .on('value') 侦听器不会触发,也不会引发任何异常。请赐教如何在没有读取权限的情况下检测经过身份验证的用户。
【问题讨论】:
标签:
javascript
firebase-realtime-database
firebase-security
【解决方案1】:
on() 方法采用所谓的“取消回调”,当用户没有(或失去)在该位置收听的权限时将调用该回调。来自reference documentation for on():
cancelCallbackOrContext
可选
如果您的事件订阅因您的客户端无权读取此数据(或它有权限但现在已丢失)而被取消,将通知您的可选回调。此回调将传递一个 Error 对象,指示失败发生的原因。
所以在大多数情况下,使用类似的东西:
ref.on('value', function(snapshot) {
console.log(snapshot.val());
}, function(error) {
console.error(error);
})