Firebase 规则:仅允许用户修改自己的个人资料,但允许用户创建新用户



我花了最后一天的时间尝试对Firebase规则做一些事情,但我似乎在任何地方都找不到解决方案。我对Firebase规则很陌生,所以请耐心等待:)

我目前有以下规则:

{
  "rules": {
    "users": {
      "$user_id": {
        // grants write access to the owner of this user account
        ".write": "auth != null && $user_id === auth.uid",
        ".read": "auth != null && $user_id === auth.uid"
      }
    }
  }
}

这只允许具有相同 ID 的用户读取和写入其数据。但是,问题有点复杂。

如果新用户注册,则数据库中没有该用户的记录。所以我需要在用户内部创建一个新节点。我该怎么做?我不知道在哪里放置条件,这样它们就不会相互干扰。

一点解释会很棒,我对这种规则很迷茫。或者,如果您推荐更好的方法来解决此问题,请告诉我!

这是我用来创建新用户的代码:

var usersRef = firebase.database().ref('users'); 
usersRef.push({"hlo": "asdsd"}); 

但它给了我PERMISSION_DENIED。

你的规则很好。问题在于您用于编写新用户的代码。您正在创建一个随机密钥,它与当前用户的 uid 不匹配。您应该从 Firebase 身份验证中获取用户 uid:

var usersRef = firebase.database().ref('users');
var uid = firebase.auth().currentUser.uid;
usersRef.child(uid).set({"hlo": "asdsd"});

相关内容

最新更新