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