这是我到目前为止所拥有的:
var ref = new Firebase('https://url.firebaseio.com/');
ref.authWithPassword({
"email": "email@gmail.com",
"password": "******"
}, function(err, authData) {
if (err) {
console.log(err);
} else {
console.log("Authenticated successfully with payload:", authData);
}
})
我收到一条消息,确认我的身份验证成功。但是,如果我运行ref.update({})之类的东西,我会收到一条错误消息,说明权限已被拒绝。我的Firebase安全规则如下所示:
{
"rules": {
"users": {
"$user_id": {
".read": "auth != null && auth.uid == $user_id",
".write": "auth != null && auth.uid == $user_id"
}
}
}
}
感谢任何建议,谢谢!
编辑:这是我运行的代码,它给了我错误。
ref.on('value', function(snapshot){
hsObject = snapshot.val(); //hsObject is the entire Firebase document
}, function(err){
hsObject = null;
console.log('error:', err); //prints "error: Error: permission_denied at /: Client doesn't have permission to access the desired data."
});
答案 0 :(得分:1)
从错误消息:
错误:错误:在/的permission_denied:客户端无权访问所需数据。
您似乎正在尝试阅读Firebase的根目录。 Firebase会在您阅读的位置验证权限。由于您没有root权限,因此拒绝读取操作。
这是开发人员常见的混淆源,他们认为Firebase会过滤数据并仅返回用户有权访问的内容。但这根本不是Firebase安全模型的工作方式。
rules are not filters下的Firebase文档中对此进行了介绍,并定期在StackOverflow上提供:
我强烈建议您再次阅读该文档页面,因为很容易误解Firebase的工作原理,而这些错误会导致您进入以后必须更新的数据模型。