如何根据数据库用户ID(而不是UID)设置Firebase规则

2022-04-05 00:00:00 firebase javascript firebase-security

您好,我的fb数据库中有一个用户列表。用户ID是在成功注册后自动生成的,每个用户条目都有名称、电子邮件和UID。此外,这些属性中的每一个都被索引到/index中,这样我就可以根据用户的uid轻松地查找他们的id。

根据文档,Firebase说使用WRITE:$USER_ID=auth.uid

如何使用生成的ID而不是uid来完成此操作?

这里是fb数据库:https://medviz.firebaseio.com/


解决方案

在您的用户对象中将有这样的用户

users : {
 user1234abc:{         
       name: "abc"         
    },                    
    user2434dbcc:{         
       name: "abc"         
    } 
}   

用户对象中将有许多unique key/user nodes,例如user1234abcuser2434dbcc

可以将唯一键命名为Anyvariable在规则中不必将其命名为$user_id,您可以随心所欲地命名它,例如,对于唯一用户键,您可以将变量命名为$any_variable

和Auth.id中,只要用户成功验证了auth.uid中相同唯一ID,因此当您编辑与该用户相关的信息时,可以在任何地方计算auth.uid

例如,如果auth.uid包含user1234abc并且如果user1234abc正在编辑此对象user1234abc:{name: "abc" },则他将能够

查看下面的更新视图

已更新视觉层次结构:

--schema--
users : {
           ________________
          |
    user1234abc:{          |
       name: "abc"         |  
    },                     |
    user2434dbcc:{         |
       name: "abc"         |
    }                      |
}                  key can be name as any variable  in rules
                           |
-- rules--
                           | 
{                          | 
  "rules": {               |
    "users": {             |
      ".read": true,       |
           ________________|___________  
          |                            |
         |/                           | 
      "$any_variable": {              |/     
        ".write": "$any_variable === auth.uid"
      }
    }
  }
}                      

相关文章