Angular 6和Firebase的管理员授权

时间:2018-09-29 11:43:48

标签: javascript firebase firebase-realtime-database angular6 angularfire2

我在使用Firebase实时数据库实施管理员授权时遇到问题。我有一个isAdmin字段,该字段返回一个可观察到的firebase布尔值,但是它似乎无法从firebase读取该值以返回布尔值。我指定的路径是正确的,我已经对其进行了仔细检查,但仍然无法使用。请帮忙!!

我的管理员身份保护:

export class AdminAuthGuard implements CanActivate {
  constructor(
               private authService:AuthService,
               private router:Router, 
               private db : AngularFireDatabase,
               private auth : AngularFireAuth
){}

uid = this.auth
.authState
.pipe(
  map(authState => {
    if(!authState){
      return null;
    } else {
      return authState.uid;
    }
  })
);

isAdmin= this.uid
.pipe(
  switchMap(userId => {
    if(!userId){
      return observableOf(false)
    } else {
      this.db
      .object('/admin/' + userId)
      .valueChanges()
    }
  })
);

canActivate(
            next: ActivatedRouteSnapshot,
            state: RouterStateSnapshot): Observable<boolean> | 
            Promise<boolean> | boolean {
    return this.isAdmin;
  }

}

0 个答案:

没有答案