创建用户时不允许使用Firebase安全规则

Sye*_*l A 5 firebase firebase-security firebase-authentication

我使用Firebase $authWithPassword方法进行用户登录.我使用该$createUser方法为我的用户创建注册,并在成功时更新我/ users/path上的条目以保存用户名,uid和其他一些细节.这是代码

var myDataRef = new Firebase(baseURL + 'datalog/');
var refObj = $firebaseAuth(myDataRef);

refObj.$createUser({
    email: $scope.emailId,
    password: $scope.password
}).then(function(userData) {
    var UserUniqueUrl = new Firebase(baseURL + 'users/' + userData.uid + '/');
    UserUniqueUrl.set({
        'email': $scope.emailId,
        'username': $scope.username,
        'uid': userData.uid,
        'theme': 'default'
    }, function(error) {
        if (error) {
            console.log(error);
        } else {
            console.log('Successfully updated in user table');
        }
    });
}).catch(function(error) {
    if (error.code == 'EMAIL_TAKEN') {
        $scope.regStatusError = 'Email already registered!';
    } else {
        $scope.regStatusError = 'Unable to register! Try again later.';
    }
});
Run Code Online (Sandbox Code Playgroud)

这是我的安全规则

{
    "rules": {
        "users": {
            ".read": "auth != null",
            ".write": "auth != null"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试注册它给我权限被拒绝错误,我肯定是因为安全规则".read": "auth != null"".write": "auth != null".如果我将规则更改为".read": true".write": true,注册将起作用,但任何人都可以看到我的用户数据,包括我不想发生的uid和电子邮件ID.我如何改变我的规则以满足我的需要?

这就是我的用户表的样子 在此输入图像描述 任何帮助表示赞赏.谢谢.

Cyr*_*Zei -3

是的,你需要将你的规则更改为这样的

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这应该可以解决它