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)
这应该可以解决它
归档时间: |
|
查看次数: |
1050 次 |
最近记录: |