是否有更好的方法来检查用户是否已登录?,因为我对多个应用程序使用以下方法并为它们提供服务会造成差异,因为这会使当前应用程序的项目与其他应用程序的项目混淆项目。
我检查用户是否这样登录:
constructor(private afAuth: AngularFireAuth, private router: Router, private db: AngularFirestore) {
this.userData = new ReplaySubject<UserDetails>();
afAuth.auth.onAuthStateChanged(user => {
if (user) {
this.user = user;
const local = localStorage.getItem('user');
if (local !== null) {
this.userData.next(JSON.parse(localStorage.getItem('user')));
} else {
this.fetchUserData();
}
} else {
localStorage.setItem('user', null);
}
});
}
get isLoggedIn(): boolean {
const user = localStorage.getItem('user');
return user !== 'null';
}
答案 0 :(得分:1)
如果每个应用都是从其自己的域提供服务,则每个应用都会拥有自己的localStorage
,并且它们之间不会有任何冲突/混乱。
如果要从同一域中提供多个应用程序,则必须在本地存储中为每个应用程序使用唯一的名称。 localStorage.setItem('app1_user', null)
和localStorage.setItem('app2_user', null)
之类的东西。
但是请注意,Firebase身份验证每个域只有一个经过身份验证的用户。因此,如果您要从同一域中提供多个应用程序,则该用户(根据Firebase身份验证)将同时登录所有应用程序(或不登录)。