Наблюдение за выходом из системы при угловой аутентификации Firebase - PullRequest
0 голосов
/ 23 октября 2018

Я использую угловой Fire (для аутентификации 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

В этом примере я предполагал, что получу ноль, если пользователь выйдет из системы.Однако я не нахожу способ вызвать условие else в операторе IF.

Есть ли способ, с помощью которого я могу обнаружить выход из приложения, я хочу сделать это, чтобы я могможет очистить любую переменную, которую я держу в руках ключ.

Например, в моем сервисе userService я хочу сохранить кэшированную копию пользовательского документа из firebase, на которую другие ссылочные службы я хочу ссылаться (вместо прямой подписки на документ).Я хочу убедиться, что при выходе из системы это очищается, чтобы последующий вход в систему не ссылался на старую информацию.

...