我想保护Web应用程序中的管理路由。我创建了一个admin-auth-guard服务,并使用canActivate()(我遇到了问题,但已参考上一个线程对其进行了修复)。现在,在编译期间没有弹出错误,但实时地,控制台弹出了一些错误消息: Console Error Message 这是我的管理员身份验证保护服务代码:
export class AdminAuthGuardService {
constructor(private auth: AuthService, private userService: UserService) { }
canActivate():Observable<boolean>{
return this.auth.user$
.pipe(switchMap( user => {
return this.userService.get(user.uid).valueChanges()}))
.pipe(map(appUser=>appUser.isAdmin));
}
}
我的身份验证服务代码:
export class AuthService {
user$:Observable<firebase.User>
constructor(private afAuth : AngularFireAuth ,private route: ActivatedRoute) {
this.user$=afAuth.authState;
}
login(){
let returnUrl=this.route.snapshot.queryParamMap.get('returnUrl') || '/'
localStorage.setItem('returnUrl',returnUrl);
this.afAuth.auth.signInWithRedirect(new firebase.auth.GoogleAuthProvider());
}
logout(){
this.afAuth.auth.signOut();
}
}
我的用户服务代码:
export class UserService {
constructor(private db: AngularFireDatabase) { }
save(user:firebase.User){
this.db.object('/users/'+user.uid).set({
name: user.displayName,
email: user.email
});
}
get (uid:string) : AngularFireObject<appUser>{
return this.db.object('/users'+uid);
}
}
我的应用程序用户模块:
export interface appUser{
name: string;
email: string;
isAdmin: boolean
}
我不明白为什么会这样。谢谢您的帮助。