gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:22:50 24 4
gpt4 key购买 nike

我使用 Firebase $authWithPassword用户登录的方法。我使用 $createUser为我的用户创建注册的方法,并在成功后更新我的/users/路径上的条目以保存用户名、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.';
}
});

这是我的安全规则
{
"rules": {
"users": {
".read": "auth != null",
".write": "auth != null"
}
}
}

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

这就是我的用户表的样子
enter image description here
任何帮助表示赞赏。
谢谢。

最佳答案

您只需要在用户通过身份验证时才允许在您的 Firestore 数据库中创建用户:

match /users/{uid} {
allow create: if request.auth.uid != null;
}
但是,您可以将用户的电子邮件验证为:
match /users/{uid} {
allow create: if request.auth.uid != null
&& request.auth.token.email_verified == true
}
请注意,uid 将与您的文档 ID 匹配。

关于创建用户时不允许 Firebase 安全规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33889349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com