我一直在使用火力地堡的认证项目。当我登录到我的项目时,有时firebase.auth().currentUser
方法返回来自其他用户的信息。有时候我会从当前的实际用户那里获得信息,有时候会从之前登录的用户那里获得信息 - 发生这种情况时,纠正问题并为正确用户获取数据的唯一方法是注销并重新登录。火力点 - 火力地堡当前用户不是存储在正确的用户
我的登录方法:
onLoginClick =() => {
firebase.auth().signInWithEmailAndPassword(this.state.email.trim(), this.state.password.trim())
.then((user) => {
//Some redirects depending on my users role
})
.catch((error) => {
console.log(error, error.message);
if (error.code == "auth/user-not-found" || error.code == "auth/wrong-password") {
//Handle error
}
});
}
我的退出方法:
onLogoutClick =() => {
firebase.auth().signOut().then(function() {
this.props.history.replace("/")
}).catch(function (error) {
console.log(error);
});
}
他们是非常标准的,但好像我做错了什么。我试着在注销方法上清除sessionStorage
和localStorage
,但这没有帮助。
UPDATE:
我一些建议,试图像做:
firebase.auth().signOut().then(() => {
firebase.auth().signInWithEmailAndPassword(email, password).then((user) => {
//My redirects and everything
})
})
但是,这是行不通的。
另外,我注意到,当我登录并使用错误的凭据,在sessionStorage的获取与用户先前签署的项目,即使我签他。
之前您登录检查,如果当前用户是零。如果它没有呼叫您的注销功能,请将用户签入。最有可能发生这种情况的原因是,旧用户仍然登录。您如何退出应用程序?用户是否保持登录状态? – DoesData
@DoesData当我注销用户它;将我的应用重定向到主屏幕,所有登录的用户选项消失,我检查了开发者控制台,localStorage好像没有当前用户密钥。但是,当我再次登录时,即使我之前检查过,有时也会得到错误的信息。 –