首页 > 解决方案 > 如何检查和存储用户是否正确登录?

问题描述

有没有更好的方法来检查用户是否登录?因为我对多个应用程序使用以下方法并以某种方式为它们提供服务会导致差异,因为它会将当前应用程序的项目与其他应用程序的项目混淆。

我检查用户是否像这样登录:

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';
}

标签: htmlangularfirebasefirebase-authentication

解决方案


如果每个应用程序都是从自己的域提供的,那么每个应用程序都有自己的localStorage,并且它们之间不会有任何冲突/混淆。

如果您为同一个域中的多个应用程序提供服务,则必须在本地存储中为每个应用程序使用唯一名称。类似于localStorage.setItem('app1_user', null)vs的东西localStorage.setItem('app2_user', null)

但请注意,Firebase 身份验证每个域只有一个经过身份验证的用户。因此,如果您为来自同一个域的多个应用程序提供服务,则用户(根据 Firebase 身份验证)同时登录所有这些应用程序(或不登录)。


推荐阅读