Angular2 Firebase设置用户自定义属性

Tou*_*afi 5 firebase typescript angular2-routing angular

我一直在尝试使用auth.updateProfile方法设置用户自定义属性或属性,但它只保存displayName属性,因为它在其文档中提到:

this.af.auth.createUser({
   email: formData.value.email,
   password: formData.value.password,
}).then((user) => {
   let userProfile = formData.value;
   userProfile.role = AuthService.ROLE_PATIENT;
   userProfile.displayName = `${formData.value.firstName} ${formData.value.lastName}`;
   user.auth.updateProfile(userProfile).then(function(){
   this.router.navigate(['/']);  
}); 
Run Code Online (Sandbox Code Playgroud)

现在问题我如何设置用户的自定义属性,以便我可以让他们进入 FirebaseAuthState

问题:为什么我需要为每个用户保存自定义属性?

答:因为我正在使用Auth Guard来使用role保存在数据库示例中的属性来激活特定路由:

canActivate(route: ActivatedRouteSnapshot,
              state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
    //Currently I'm using this which only check that user is logged in or not
    return this.auth
      .take(1)
      .map((authState: FirebaseAuthState) => !!authState)
      .do(authenticated => {
        if (!authenticated) this.router.navigate(['/login']);
      });   
  }
Run Code Online (Sandbox Code Playgroud)

但是我想要再检查一下以验证用户是否具有患者的角色,我在创建上述用户时保存了这个角色,例如: return user.role == 'patient'

Fra*_*len 1

Firebase 身份验证中的现有身份提供商无法添加自定义属性。如果您想添加自定义属性,则必须实现自定义身份提供程序(请参阅在受信任的进程中创建自定义令牌使用自定义令牌登录),或者从客户端查找附加信息备用数据源(例如 Firebase 数据库)。