无法添加新的';用户';行到Firebase用户使用逆火收集进行收集

无法添加新的';用户';行到Firebase用户使用逆火收集进行收集,firebase,firebase-security,Firebase,Firebase Security,在用户使用FirebaseSimpleLogin成功注册后,我正在使用回火集合尝试将新用户行添加到Firebase中的自定义“用户”集合 以下是我的安全规则: "users": { "$user_id": { ".read": "auth.id === $user_id", ".write": "(!data.exists() && (newData.child('id').val() + '' === auth.id)) || ($user_id ===

在用户使用FirebaseSimpleLogin成功注册后,我正在使用回火集合尝试将新用户行添加到Firebase中的自定义“用户”集合

以下是我的安全规则:

"users": {
  "$user_id": {
    ".read": "auth.id === $user_id",
    ".write": "(!data.exists() && (newData.child('id').val() + '' === auth.id)) || ($user_id ===  auth.id)"
  }
安全规则应实现以下功能:

  • 允许新注册的用户创建新的“用户”行,以便其个人信息存储在URL“”下

  • 登录用户只能读取自己的用户行

  • 登录用户只能更新自己的用户行

  • 但是,我使用以下代码被拒绝了权限:

        var FireUsers = Backbone.Firebase.Collection.extend({
          model   : Backbone.Model,
          firebase: new Firebase(FirebaseURL + '/users/')
        }),
        fireUsers = new FireUsers();
    
        fireUsers.add(newUserObj);
    
    我在模拟器中尝试过,满足上述3个条件的唯一方法是将安全规则设置为“auth!=null”,这显然不理想

    感谢您的帮助


    -Tony

    如果登录用户只能读取其在users表中的行,则无法为整个users集合创建集合(因为这意味着每个人都可以读取users表)。为特定URL创建
    Backbone.Firebase.Collection
    的新实例将立即尝试下载该URL上的所有数据,但由于安全规则,该操作将失败

    我建议改用
    Backbone.Firebase.Model
    ,直接在包含用户ID的URL上为用户创建一个新实例