这是我在Firebase中的数据库中的JSON,我想做一些像auth这样的规则,但我收到错误而且我不知道该怎么做:
"users" : {
"0BuRcGEZQRUaQ5T2gQf4RDUcuZE2" : {
"address" : "La Prensa",
"email" : "ougishura_5421@hotmail.com",
"id" : "0BuRcGEZQRUaQ5T2gQf4RDUcuZE2",
"lastName" : "Vega",
"middleName" : "Paul",
"name" : "Christian",
"nroDocument" : "171645220",
"phoneNumber" : "1234567890",
"rol" : "administrador",
"secondLastName" : "Niama"
}
}
这些是我使用的规则:
{
"rules": {
"users": {
"$user_id": {
".read": "auth != null",
".write": "auth.uid === $user_id"
}
}
}
}
错误:
angular.js:13550错误:在/ users处的permission_denied:客户端无权访问所需数据。
这是我在网络应用中收到的错误。我无法看到我注册的用户。但是,当我停止使用$user_id
时,它可以工作。我认为这个变量并没有得到我的价值。
代码:
resultUsers : function () {
var ref = pharmacyFactory.ref.child("users");
var result = $firebaseArray(ref);
return result;
},
答案 0 :(得分:3)
问题是您使用from dateutil import tz
from dateutil.parser import parse
ET = tz.gettz('US/Eastern')
CT = tz.gettz('US/Central')
MT = tz.gettz('US/Mountain')
PT = tz.gettz('US/Pacific')
us_tzinfos = {'CST': CT, 'CDT': CT,
'EST': ET, 'EDT': ET,
'MST': MT, 'MDT': MT,
'PST': PT, 'PDT': PT}
dt_est = parse('2014-01-02 04:00:00 EST', tzinfos=us_tzinfos)
# >>> dt_est.tzinfo
# tzfile('/usr/share/zoneinfo/US/Eastern')
dt_pst = parse('2016-03-11 16:00:00 PST', tzinfos=us_tzinfos)
# >>> dt_pst.tzinfo
# tzfile('/usr/share/zoneinfo/US/Pacific')
来跟踪整个$firebaseArray(ref)
分支,但是您将阅读规则放在/users
内。 因此,由于您在/users/user_id
中没有阅读规则,因此会设置默认值/users
。
如果您希望用户具有对整个false
分支的读取权限,但只写入他自己的用户数据,您可能会对执行以下操作感兴趣:
/users
如果您希望用户只看到自己的用户,那么您应该使用{
"rules": {
"users": {
".read": "auth != null",
"$user_id": {
".write": "auth.uid === $user_id"
}
}
}
}
而不是$firebaseObject(ref.child(userId))
。并按照以下规则使用您的规则:
$firebaseArray