Не удается проверить, вошел ли пользователь в Firebase + Angular - PullRequest
0 голосов
/ 16 мая 2019

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

ТАК, это моя защита.

    import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';
import { AngularFireAuth } from '@angular/fire/auth';
@Injectable({
  providedIn: 'root'
})
export class AuthguardGuard implements CanActivate {
constructor(public af: AngularFireAuth){

}

  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
      var user = this.af.auth().currentUser;

      if (user) {
        return true;
      } else {
        return false;
      }
  }

}

Проблема в том, что ---> var user = this.af.auth().currentUser; выдает ошибку

Cannot invoke an expression whose type lacks a call signature. Type 'Auth' has no compatible call signatures.ts(2349)
(property) AngularFireAuth.auth: firebase.auth.Auth

oO, как я должен проверить, вошел ли пользователь в систему?Я не хочу использовать localSTorage для этого.

1 Ответ

0 голосов
/ 17 мая 2019

Я закончил с использованием следующего canActivate

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
    return this.auth.authState.pipe(map(User => {
      if (User) {
        return true;
      } else {
        this.router.navigate(['/login']);
        return false;
      }
    }));
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...