Python Firebase - 用户身份验证?

时间:2015-04-24 06:14:32

标签: python firebase firebase-security

我需要一些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时才有效。

我会感谢任何帮助,提示,技巧,任何事情。

编辑:

enter image description here

2 个答案:

答案 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。"输入他的名字(以后是密码,不知道该怎么做),他只会被允许看到主管是他自己的工人的信息。