angular - 使用 Firebase 进行基于角色的用户访问控制
问题描述
我尝试使用 Firebase 创建基于角色的用户访问控制,以允许在用户经过身份验证 && 管理员的情况下访问路由......我正在尝试使用本教程:https ://angularfirebase.com/lessons/role- based-permissions-and-authorization-with-firebase-auth/ 但我使用 angular 7 ,我在“ Observable.of(null) ”和“.subscribe(user => { this.user.next(user )"
我的我的 AuthService :
import { Injectable } from '@angular/core';
import { User } from 'src/app/register/user';
import { AngularFireAuth } from '@angular/fire/auth';
import { map } from "rxjs/operators";
import { auth } from 'firebase';
import { Router } from "@angular/router";
import { AngularFirestore } from '@angular/fire/firestore';
import { Observable } from 'rxjs';
import { switchMap } from 'rxjs/operators';
//import * as firebase from 'firebase/app';
import { AngularFireDatabase } from '@angular/fire/database';
import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
import { observable } from 'rxjs/internal/symbol/observable';
@Injectable({
providedIn: 'root'
})
export class AuthService {
user: BehaviorSubject<User> = new BehaviorSubject(null)
constructor(public db: AngularFireDatabase, private fire: AngularFireAuth) {
this.fire.authState.pipe(switchMap(auth => {
if (auth) {
/// signed in
return this.db.object('users/${auth.uid}')
} else {
/// not signed in
return Observable.of(null)
}
}).subscribe(user => {
this.user.next(user)
}))
}
我的用户模型:
export interface Roles {
reqUser: boolean;
volunteer?: boolean;
admin?: boolean;
}
export class User {
uid: string;
email: string;
username: string;
password : string;
roles: Roles;
fullname : string;
constructor(auth) {
this.email = auth.email
this.uid = auth.uid
this.roles = { reqUser: true }
}
}
解决方案
试试这个 return of(null)
而不是return Observable.of(null)
,它将解决Observable.of(null)
您当前遇到的语法错误的错误
对于订阅功能中的第二个错误,只需尝试此代码
subscribe(user => this.user = user)
代替
subscribe(user => {
this.user.next(user)
}
希望这能解决您的错误,如果没有用您的错误和代码回复我
推荐阅读
- ios - 如何根据iOS版本选择性导入Framework并实现扩展?
- angular - 当 Id 匹配时,角度 ngrx 状态数组项更新
- python - python循环无法识别超出第一个JSON对象
- uwsgi - uWSGI 杀死大型 Post 请求
- javascript - 如何在 javascipt 中添加不同的图像
- mapbox - Mapbox 圆形颜色的数据驱动属性
- flask - ./test.py 中的“Flask ImportError:没有名为 Flask 的模块”
- javascript - 如何在下次搜索时删除以前搜索过的项目
- google-cloud-firestore - @DocumentID Firestore 使用 Swift Codable
- c# - 无法在 ASP.NET Core 中安装“Microsoft.EntityFrameworkCore.Tools.Dotnet”