在Angular Firebase身份验证中注意注销

时间:2018-10-23 01:41:15

标签: angular firebase firebase-authentication angularfire

我正在使用角度射击(用于Firebase身份验证)。我遵循了一些示例代码,并开始构建我的身份验证流程。示例代码之一:

@Injectable({
  providedIn: 'root'
})
export class UserService {

  loggedInUser:any = {}
  userid : string = "";
  settings : any = {};
  loggedin:boolean = false;
  public user: IUser;
  public userLoaded:boolean = false;



  constructor(

    private afAuth: AngularFireAuth,
    private db: AngularFirestore,
    private auth: AngularFireAuth,
  ) {




    this.afAuth.authState.pipe(
      switchMap(user => {
        if (user) {
          console.log("User Logged In :", {user,uid: user.uid});

          this.db.doc<User>(`Users/${user.uid}`).valueChanges().subscribe(user=> {
            console.log("From Subscription : ", user);


            this.loggedInUser = user;
            this.settings = user.settings;
            this.loggedin = true;

          });



        } else {
          console.log("Assumed Logout", user);

          this.loggedInUser = {};
          this.settings = {};
          this.loggedin = false;
          return of(null)
        }
      })
    ).subscribe();
   }//End of Constructor

在此示例中,我假设如果用户注销,则将获得null。但是,我找不到在IF语句中触发else条件的方法。

有没有一种方法可以检测到应用程序的注销,我想这样做,以便可以清除持有键的任何变量。

例如,在我的userService中,我希望从firebase保留用户文档的缓存副本,我希望其他服务引用该副本(而不是直接订阅该文档)。我要确保在注销时将其清空,以便随后的登录不会引用旧信息。

0 个答案:

没有答案