我花了最后一天的时间尝试对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"});