我需要一些python和firebase的指导。我试图制定一些身份验证规则,但我已经走上了一条艰难的道路。
我正在构建一个数据库,该数据库应该允许主管查看他们负责人员的信息,我想限制访问权限,以便他们只能看到有关他们名字的人的信息作为主管。以下是代码后面的示例:
name1 :John Paul - 年龄:34 - 部门:IT - 主管:Peter M。
name2 :史蒂夫丹 - 年龄:40 - 部门:卖出 - 主管:Mike P。
我希望Mike P.能够只检查具有Field 主管的名称作为Mike P..
这是我到目前为止在firebase规则上的内容:
{
"rules": {
"people":{
"$supervisor":{
".read":"data.child($supervisor).child('Supervisor').val() === auth.super_name"
}}}}
但它不起作用:'( 它只有在我使用确切名称(例如:Steve Dan)并消除变量$ supervisor时才有效。
我会感谢任何帮助,提示,技巧,任何事情。
编辑:
答案 0 :(得分:2)
如果删除.child($supervisor)
,您的安全规则应该有效。所以:
{
"rules": {
"people":{
"$supervisor":{
".read":"data.child('Supervisor').val() === auth.super_name"
}}}}
但是,它需要将super_name
设置为身份验证的一部分。你这样做了吗?
您可以先尝试使用Firebase控制台上的模拟器测试安全规则(https://YourFirebase.firebaseio.com/?page=Simulator)。通过这种方式,您可以确定问题是与您的规则有关还是与您的Python代码有关。您的自定义身份验证'字段为{ super_name: "Mike P." }
。
安全规则中$supervisor
的命名有点令人惊讶。这不应该是$person
,因为它是人员名单吗?
答案 1 :(得分:1)
感谢@Marein和@FrankvanPuffelen的帮助,我设法让它发挥作用。顺便说一下,模拟器非常有用。
这就是我所做的:
我的firebase身份验证auth = firebase.FirebaseAuthentication(mySecret, None, extra = {'super_name':'Mike P.'})
我的规则:
{
"rules": {
"workers":{
"$gender":{
"$worker":{
".read":"data.child('supervisor').val() === auth.super_name" }
}}}}
现在当" Mike P。"输入他的名字(以后是密码,不知道该怎么做),他只会被允许看到主管是他自己的工人的信息。