Python Firebase - 用户身份验证?

Python Firebase - User authentication?

我需要一些 python 和 firebase 的指导。我正在尝试制定一些身份验证规则,但我遇到了一条艰难的道路。

我正在构建一个数据库,该数据库应该允许主管查看有关他们负责的人员的信息,我想限制访问权限,以便他们只能查看有关具有其姓名的人员的信息作为主管。这是代码后面的示例:

name1:约翰·保罗 - 年龄: 34 - 部门:IT - 主管:Peter M.

name2:史蒂夫·丹 - 年龄: 40 - 部门:销售 - 主管:Mike P.

我希望 Mike P. 能够只检查字段 主管 为 Mike P.

的姓名

这是我目前对 firebase 规则的了解:

{
"rules": {
  "people":{
    "$supervisor":{
    ".read":"data.child($supervisor).child('Supervisor').val() === auth.super_name"
}}}}

但它不起作用:'( 仅当我使用确切名称(例如:Steve Dan)并消除变量 $supervisor 时,它才有效。

我将不胜感激任何帮助、提示、技巧等。


编辑:

如果您删除 .child($supervisor),您的安全规则应该会起作用。所以:

{
"rules": {
  "people":{
    "$supervisor":{
    ".read":"data.child('Supervisor').val() === auth.super_name"
}}}}

但是,它需要将 super_name 设置为身份验证的一部分。你这样做了吗?

您可以先尝试在 Firebase 仪表板上使用模拟器测试您的安全规则 (https://YourFirebase.firebaseio.com/?page=Simulator)。这样您就可以确定问题是出在您的规则上还是出在您的 Python 代码上。您的 'Custom Auth' 字段将是 { super_name: "Mike P." }.

安全规则中$supervisor的命名有些让人意外。这不应该是 $person,因为它是一个人员列表吗?

好吧,感谢@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."输入他的名字(后来是密码,不知道怎么输入),他只能看到自己是主管的工人的信息。