更改 firebase 安全角色

Posted

技术标签:

【中文标题】更改 firebase 安全角色【英文标题】:Change the firebase security role 【发布时间】:2020-11-16 15:43:21 【问题描述】:

我在 Firebase 实时数据库中有以下 JSON 文件结构。 我想扮演我的角色,如果 namenumber 为空,不要读取数据,写入 firebase 暂时可以... 我写的代码是否正确?我不知道如何定位树中的特定分支(我是初学者)。它通过一个错误说 Unknown variable '$name'。

这是我的代码:


 "rules": 
    "users": 
        "uid": 
          "name":
            ".read": "$name !== null",
            ".write": true
         
        
       
  

这是我的原始代码。

users
 4hUNfg6xhiZ8ZTVQVFOYeFHL2ME3
  blood_Group: "A+"
  city: "الموصل الايسر"
  donor: true
  email: "a07503240115@gmail.com"
  gender: "ذكر"
  mobile: "07503240115"
  name: "أحمد ابراهيم"
  password: "a07503240115"
  uid: "4hUNfg6xhiZ8ZTVQVFOYeFHL2ME3"

【问题讨论】:

【参考方案1】:

只有一些预定义的变量可用于编写规则,例如:

auth - 包含用户身份验证信息

data - 包含当前树下的数据。

所以你不能像变量一样访问数据库这样的字段。

这就是我假设您想要的 - 如果该用户对象的 namemobile 字段不为空,则用户应该只能从 users/$uidread

你是这样做的:

   
     "rules": 
        "users": 
            "$uid": 
              ".read": "data.child('name').val() != null &&  data.child('name').val().length > 0 && data.child('mobile').val() != null &&  data.child('mobile').val().length > 0",
              ".write": true
             
            
           
    

仅当 namemobile 不为 null 且不为空时,才允许对特定用户对象进行读取访问。

【讨论】:

感谢您的代码@Susheel。我试过你的代码,但没有用。我什至将 '&&' 更改为 '||'没有什么变化。我不知道问题出在哪里。 @AhmedMostfa_89 您在发布规则时是否收到任何错误消息?如果是,请分享。 我遵循了您共享的确切代码。它说 read denied 。模拟快照:键入读取位置 /users/uid/name/"أحمد ابراهيم" Data null Auth null @AhmedMostfa_89 那不是一个有效的路径。您只能参考文档而不是字段。有效路径是 - users/4hUNfg6xhiZ8ZTVQVFOYeFHL2ME3 。试试这个,让我知道。 现在可以使用了。谢谢,但是当我发布它时,它在我的手机上不起作用。我可以给您发送 Play 商店应用程序链接吗?一定有什么不对。好吧,该应用程序搜索血型和城市,如果在 Firebase 端找到数据(基于血型和城市),它​​将显示所有结果。但如您所知,有些用户在输入他们的信息时没有电话号码和姓名。我仍然面临同样的问题。

以上是关于更改 firebase 安全角色的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 更改权限公共访问 SwiftUI

Android 中的 Firebase 本地数据库有多安全?

使用 google firebase 和 spring 进行身份验证

firebase 处理角色的最佳方式

扩展 Firebase 用户

React Router 用户角色的最佳实践 (Firebase)