Authguard angularfire2检查电子邮件是否已通过验证

时间:2017-02-23 13:26:47

标签: angular firebase firebase-authentication angularfire2

我目前在我的authguard中有以下代码,以防止在未登录时访问路由,但我还希望将未经验证的用户发送到验证页面,我该怎么做?

canActivate(): Observable<boolean> {
return Observable.from(this.auth)
  .take(1)
  .map(state => !!state)
  .do(authenticated => {
    if (!authenticated) this.router.navigate(['/login']);
  })
}

1 个答案:

答案 0 :(得分:1)

您可以检查emailVerified属性的值:

constructor(private af: AngularFire) { }

canActivate(): Observable<boolean> {
  return this.af.auth
    .take(1)
    .map(auth => auth.auth.emailVerified)
    .do(emailVerified => {
      if (!emailVerified) this.router.navigate(['/verify-email']);
    });
}

请注意。代码中的this.auth可能已经是一个可观察的。无需将其包装在Observable.from()内。