在我使用 Firebase 成功登录我的应用程序后,我想存储一堆信息(如用户电子邮件、用户 uid、用户名......)并在整个应用程序中使用它。我发现最好的方法是使用 Ionic Storage。
现在,在第一次登录时工作正常,但如果我注销并使用另一个用户登录,第一个用户信息仍然显示而不是新用户信息。请注意,当用户注销时,我正在清理所有存储空间。我的代码:
身份验证(守卫):我在登录后再次检查用户身份验证状态。
return this.AFauth.authState.pipe(map(auth => {
if (auth !== null && auth !== undefined) {
this.saveUserInStorage(auth);
return true;
} else {
this.router.navigate(['/home']);
return false;
}
}))
在存储中保存 Firebase 信息
saveUserInStorage(auth) {
this.storage.ready().then(() => {
this.storage.clear(); //cleaning again just in case...
this.storage.set('user_uid', auth.uid);
this.storage.set('user_name', auth.displayName);
this.storage.set('user_email', auth.email);
this.storage.set('user_photoUrl', auth.photoUrl);
}).catch(err => {
console.log('no pudimos guardar');
});
}
登出功能
logOutUser() {
firebase.auth().signOut().then(result => {
// after user hits logout, I erase my storage
this.storage.remove('user_email');
this.storage.clear();
this.router.navigate(['/home']);
}).catch(error => {
console.log(error);
// An error happened.
});
}
我必须重新加载我的网页才能看到上次登录的用户。