无法使用具有来自 firebase 角色的 Angular AuthGuard
Posted
技术标签:
【中文标题】无法使用具有来自 firebase 角色的 Angular AuthGuard【英文标题】:Angular AuthGuard with roles from firebase cant be used 【发布时间】:2020-12-18 08:45:21 【问题描述】:我尝试创建一个 Guard,它应该检查用户是否具有管理员角色。 为此,我在 Cloud Firestore 中有一个布尔值 (admin = true | false)。
当我尝试检查当前用户是否是管理员时,我收到以下错误消息:
找不到模块:错误:无法解析“rxjs/add/operator/map”
我的 admin-guard.ts
@Injectable()
export class AdminAuthGuard implements CanActivate
constructor(private auth: AuthService)
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean>
return this.auth.user$.pipe(
take(1),
map(user => user && user.admin ? true : false),
tap(isAdmin =>
if (!isAdmin)
console.error('Access denied - Admins only');
)
);
我的 auth.service.ts
@Injectable()
export class AuthService
user$: Observable<AppUser>;
constructor(private afAuth: AngularFireAuth,
private afs: AngularFirestore)
this.user$ = this.afAuth.authState.pipe(switchMap(user =>
if (user)
return this.afs.doc<AppUser>(`users/$user.uid`).valueChanges();
else
return of(null);
));
我的用户界面:
export interface AppUser
uid: string;
email: string;
admin?: boolean;
如果有人能告诉我如何解决这个问题,那就太好了。谢谢!
【问题讨论】:
你试过 import map from 'rxjs/operators'; 【参考方案1】:我可以通过删除导入 'rxjs/add/operator/map' 来解决问题 并使用 import map from 'rxjs/operators';
【讨论】:
以上是关于无法使用具有来自 firebase 角色的 Angular AuthGuard的主要内容,如果未能解决你的问题,请参考以下文章
无法在 React.js 中接收来自 Firebase 的消息