【问题标题】:Role-Based User Access Control With Firebase - Syntax Error (switchMap)使用 Firebase 进行基于角色的用户访问控制 - 语法错误 (switchMap)
【发布时间】:2018-07-11 18:08:20
【问题描述】:

我尝试使用 Firebase 创建基于角色的用户访问控制,以便在用户经过身份验证 && admin 时允许访问路由...我正在使用本教程进行尝试:https://angularfirebase.com/lessons/role-based-permissions-and-authorization-with-firebase-auth/

我的身份验证服务

import { Injectable } from '@angular/core';
import {AngularFireAuth} from 'angularfire2/auth';
import {Observable} from 'rxjs/Observable';
import {User} from '../models/user.model';
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
import {AngularFireDatabase} from 'angularfire2/database';
import * as firebase from 'firebase/app';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/switchMap';

@Injectable()
export class AuthService {
  user: BehaviorSubject<User> = new BehaviorSubject(null)

  constructor(private afAuth: AngularFireAuth, private db: AngularFireDatabase) {
    this.afAuth.authState
      .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 {
  reader:boolean;
  admin?:boolean;
}

export class User {
  id:number;
  admin:boolean;
  activated:boolean;
  usertype:string;
  profile : {
    title:string;
    firstname:string;
    lastname:string;
    gender:string;
    houseNr:string;
    plz:string;
    street:string;
    place:string;
    nation:string;
    email:string;
    companyname:string;
    ustID:string;
    phone:number;
    mobile:number;
    fax:number;
    intPhonePrefix:string;
    intMobilePrefix:string;
    intFaxPrefix:string;
    phonePrefix:string;
    mobilePrefix:string;
    faxPrefix:string;
    bankDepositor:string;
    bankIban:string;
    bankBic:string;
    bankInstitute:string;
  }
  roles: Roles;

  constructor() {
    this.roles = { reader: true }
  }
}

但我在.switchMap(auth =&gt; { 上遇到语法错误:

我不知道是什么错误..

【问题讨论】:

    标签: angular typescript firebase firebase-realtime-database angularfire2


    【解决方案1】:

    您必须使用管道。 this.afAuth.authState.pipe( switchMap(data => .... ))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-25
      • 2011-11-02
      • 2016-05-06
      • 2015-07-22
      • 2022-09-27
      • 2016-03-06
      • 2012-01-25
      • 1970-01-01
      相关资源
      最近更新 更多