Javascript Vue+;Firebase:正在创建但在其他用户帐户下登录的用户
我在Firebase中遇到了一个非常奇怪的问题,如果我创建一个新用户时使用与前一个用户相同的密码,那么新用户将使用正确的信息创建,但将使用前一个用户帐户登录,并显示所有前一个用户的信息 我注销,然后使用新用户信息登录,然后才显示正确的信息。如果我使用相同的密码,新用户会在Firebase中覆盖以前的用户路径,但我似乎无法重新创建 我创建新用户的代码如下Javascript Vue+;Firebase:正在创建但在其他用户帐户下登录的用户,javascript,firebase,vue.js,firebase-authentication,Javascript,Firebase,Vue.js,Firebase Authentication,我在Firebase中遇到了一个非常奇怪的问题,如果我创建一个新用户时使用与前一个用户相同的密码,那么新用户将使用正确的信息创建,但将使用前一个用户帐户登录,并显示所有前一个用户的信息 我注销,然后使用新用户信息登录,然后才显示正确的信息。如果我使用相同的密码,新用户会在Firebase中覆盖以前的用户路径,但我似乎无法重新创建 我创建新用户的代码如下 createNewUser(){ //使用电子邮件和密码创建新用户。 var email=this.newUserEmail; var pass
createNewUser(){
//使用电子邮件和密码创建新用户。
var email=this.newUserEmail;
var password=this.newUserPassword;
firebaseAuth.createUserWithEmailAndPassword(电子邮件,密码).catch(函数(错误){
//在这里处理错误。
var errorCode=error.code;
var errorMessage=error.message;
// ...
}).然后(()=>{
firebaseAuth.onAuthStateChanged(用户=>{
database.ref('/users/'+user.uid).set({
名称:this.newUserName,
电子邮件:this.newUserEmail,
伊斯雷塔勒:错,
伊萨明:错
});
});
});
//推回家
push({path:'/'});
}
}
}
然后,新创建的用户将被带到主主页,其中在created(){}
方法中运行以下代码
//检查用户并发送一个操作,将isAuthed状态更改为true。
firebaseAuth.onAuthStateChanged(用户=>{
console.log(store.state.authentication);
console.log(用户);
存储调度('checkUser',用户);
})
最后,这将发送一个运行以下命令的操作
checkUser(上下文,用户){
if(user.uid){
commit('authUser',user);
//checkUser在应用程序初始化时运行一次。
//从firebase获取用户的isRetailer属性的值。
firebase.database()
.ref('/users/'+user.uid+'/isRetailer/'))
.once('value')。然后(snapshot=>context.commit('isRetailer'){
值:snapshot.val()
}));
//从Firebase获取当前用户的名称,并最终将其存储在Vuex状态。
firebase.database()
.ref('/users/'+user.uid+'/name/'))
.once('value')。然后(快照=>context.commit('getDisplayName'){
名称:snapshot.val()
}));
}否则{
log(“当前没有用户登录”);
}
},
因此,基本上我在做以下工作
谢谢 错误
无法读取null的属性“uid”
是因为firebase在初始化时可以为当前用户返回null。请参阅
第二个问题是,我认为这是由于您在firebase完成保存用户之前更改了回家的路径(请记住,此任务是异步的)
好啊我已经删除了
firebaseAuth.onAuthStateChanged(user=>{})
并将其替换为var user=firebaseAuth.currentUser代码>在第一个回调中。然后,我使用router.push()
方法删除第二个回调,并将router.push()
移到回调函数之外。这似乎消除了我的错误。我会在这里做更多的测试,看看结果。谢谢!!现在我认为这已经解决了我的问题。希望它有!谢谢你的引导:)
createNewUser () {
// Create a new user with email and password.
var email = this.newUserEmail;
var password = this.newUserPassword;
firebaseAuth.createUserWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
}).then(() => {
firebaseAuth.onAuthStateChanged(user => {
database.ref('/users/' + user.uid).set({
name: this.newUserName,
email: this.newUserEmail,
isRetailer: false,
isAdmin: false
}).then(()=>{
// Push to home after user data has been saved
router.push({ path: '/' });
});
});
});
}
}
}