火力地堡数据我是新来的火力点,我试图通过.then()
上firebase.auth().createUserWithEmailAndPassword(email, password)
不节能
保存用户对象(用户电子邮件)数据库当我试图做到这一点,它抛出一个错误:
FIREBASE WARNING: set at /users/-KlMikr6xZnfYC6dFJ6L failed: permission_denied
基本上说我没有权限将用户数据设置到用户节点。
我知道函数的作用,因为当我将安全写入规则设置为true时,在数据库中创建userobj
。
不知道我在做什么错。
controller.js
angular.module('app')
.controller('appCtrl', function($scope){
//empty user object to store info
$scope.user = {};
//empty object to accept user password
$scope.password = {};
// add login event
$scope.signUp = function(){
const email = $scope.user.email;
const password = $scope.password.setup;
// create new firebase user
firebase.auth().createUserWithEmailAndPassword(email, password)
// add user object to database
.then(function(){
var userObj = $scope.user;
console.log($scope.user);
// set up database references
let database = firebase.database();
let ref = database.ref();
let usersRef = ref.child('users');
// push user object to database
usersRef.push(userObj);
})
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorCode);
console.log(errorMessage);
});
};
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
console.log('user signed in');
var uid = user.uid;
console.log(uid);
} else {
// No user is signed in.
console.log('user not signed in');
}
});
})
火力地堡数据库规则
"rules": {
"users": {
"$uid": {
".read": true,
".write": "(auth.uid === $uid)"
}
}
}
显然你不能在用户创建之前有uid匹配,所以这就是错误。但只是打开该数据的规则可能不安全。我想看到这个答案。投票了 –